Heroquest Battlemap #10: The Castle of Mystery

This week’s Dungeondraft Heroquest map was quite a challenge. I felt as though I was hamstrung by the nature of the map, as I couldn’t use my usual methods to form a larger whole. So, it turned out to be quite an educational exercise!

Interpreting the maps and making decisions

This week’s map is downright barren; what a challenge! A set of loose rooms with no particular flavor to them, and only a few numbers to indicate random connections based on a die-roll. Oof!

Our only information is that the players’ starting point is at the bottom left in Room 2/12, the chest marked “A” in the NL version and “B” in the US version in Room 8 is their goal, and that’s about it. The US version has an additional treasure in Room 10, marked “A”, which is a ring held by one of the monsters there.

Normally, this is where I would try to glean information from the composition of the map to see if there are natural or logical flows of architecture or use. Now, though, all we know is that the rooms are randomly connected. I have to say, I was drawing a blank here! Since the only thing I could think of is that the rooms might as well have been floating in space, I figured to make them literally do that. So, I know the background will be space or chaos but what does that make the rooms?

Information from the flavor text

The two texts are largely the same, though there’s a few interesting diferences this time, thankfully.

The Dutch version calls the map Het Toverkasteel“, meaning “The Magical Castle”, which has somewhat ephemeral connotations to it. It’s a word you’d use in a fairy tale to describe the giants’ castle up in the clouds or the dark castle or the evil witch. I like the US version’s naming, though; “The Castle of Mystery” suggests that, in principle, it’s a normal castle, except it baffles the mind of all who enter. What is this castle? Who built it? Why is it there? To me, that is much more evocative and grounded than the NL naming.

A larger version of the US text

The Magic Castle

Long ago, the insane wizard Ollar found the entrance to a gold mine. With his magical powers, he built a magical castle on top of the mine to protect the gold. The castle is provided with many magical portals and is guarded by a set of monsters who are trapped in time. Can ye find the entrance? Others have gone before you but all their attempts were thwarted by the castle.

As far as the flavor text itself, though, I prefer the NL interpretation of what happened here. The US version is quite matter-of-fact: Ollar, a wizard, finds a gold mine, decides to build a castle on top of it, and traps some monsters in a magical portal maze at the bottom to protect the source of his wealth. What a capitalist! The NL version, by contrast, wastes no time in labelling Ollar as an “insane” wizard. In Dutch, “Waanzinnig” actually might mean either “mentally disturbed” or “incredibly good” (in the US sense of “crazy good”), but in the adjectival form used in the Dutch text it’s clear that the pejorative sense is meant. It’s connected to the more medical term “waanzin“, indicating “a state of delusion” and is related to “waanbeeld” (directly meaning “delusion”).

While the US version states that it’s only the lower chambers that has many magical doors, the NL version suggests the entire castle is a maze of portals. Coupled with the wizard being identified as disturbed in some manner, I decided that the rooms should likely be a very curious mix of locations. The monsters are said to be “trapped in time”, so I decided that the rooms themselves should be trapped in time as well. What if the portals didn’t just transfer you through space but also through time?

Now I had a better view of what I would do. There’d be only two rooms in the “now”: the starting point and the mine. The other rooms would be links to different points of time in the same geographical space. Once I’d decided this, I took a little inspiration from the NES classic Chrono Trigger and decided I wanted rooms ranging from neolithic to post-apocalyptic times. Finally, something to go with!

Translating into a final map

In one way, this map was somewhat easy, as I had some separate rooms that could each be their own thing. On the other hand, that made the map incredibly complex as well. I couldn’t rely on my usual methodology of making sense of the structure as a whole, or indicating some environmental storytelling in the relationship between spaces. I was just limited to single rooms and what I could do in there. On the one hand, I wanted to make filled spaces but on the other hand the more I would fill a space the less useful it would be for players to move around in. Given how much more claustrophic these spaces would already be, I chose to keep the rooms relatively sparse, so as not to overload the players.

I picked some distinct and contrasting themes for every room. I knew I wanted a lava room to suggest a more primordial period, and I’d want to contrast that with a fully frozen-over room to suggest the final days of the planet. There’d have to be a room of the castle at its height, so a clean little throne room, as well as a room of the castle in its decline. That tiny little room, I felt would be amazing for an unsettling scene: a single chair, a table, and a book is all that accompanies a single person trapped forever in a tiny room. An unopened crate sits across from that chair; perhaps the prisoner felt it more interesting to have a mystery there, so that the room had at least some possibility in it?

To distribute the other rooms, I looked at the inhabitants. There were rooms with zombies, mummies, and skeletons, so they seemed perfect for the apocalyptic rooms. The skeletons, having lost all their semblance of life, would go into the frozen apocalypse. I’d decided the room with the mummy would be the old, decayed castle, whereas the room with the zombies would be a flooded, overgrown space.

By contrast, the rooms with the orcs I wanted to reserve for the more primordeal times. They’re in the lava room, representing the oldest time period; the jungle room, for the early life; and also the central room, which is the more settled time before the castle was built.

All in all, I think the map works, though it certainly was the toughest to build. I think for the map to work out in play, backstory would have to be hinted at by the referee to bring home the reasoning behind the maps.

The final map for this dungeon. I tried to emphasize the difference in the rooms with various lighting options, though it’s interesting to see that in the small map this doesn’t come out as well.

A larger version of this map is available over on the Reddit post I made about this:

Heroquest Battlemap #9: Race Against Time

Another week, another Heroquest battlemap made in Dungeondraft! It’s hard to believe that I’ve already been doing this for over two months now but I’m happy that I’ve kept up with it. Every single map is helping me improve my skills.

Interpreting the maps and making decisions

This time around, the maps are mostly similar and once again rather sparsely filled. As far as composition goes, this one might be a bit tricky because there’s so much empty space to the top-right of the map. I suppose it could be a prompt to start learning some post-processing, even if it is just to crop the map purely to the active area. However, I think I’ll leave that skill to learn later and rather will end up using some text to fill that space or otherwise some fun little ground elements like skeletons hidden in the dirt.

As has become common, the US map has a few extra monsters on it; what’s more unusual is that it also has a complete extra room behind a hidden door! Mark C indicates that that trapped chest contains an Elixir of Life; so, essentially, the addition of this room involves two sources of resource investment (HP loss to a trap and/or to a monster) and one resource recovery (the elixir), making it a net zero room.

What is interesting about this map is that the players start in the room marked “A” at the bottom-right of the map. With three doors visible, all peopled by a bunch of monsters, it feels a little trolly that the real door is the hidden door in room A. It’s clear that the designers wanted quite some resources sapped just at the start so that the rest of the retreat would become more of a scramble. In the US version, even if the players were to directly run to the exit, they’d still face six monsters (compared to only three in the NL version).

None of the rooms here suggest a clear intended purpose other than this being a trap followed by a gauntlet. I could see the grouping of four rooms at the bottom right as sharing a function, and the grouping at the bottom-left as well. The bottom-left set has a fireplace and a table in the grouping, so that might be a food area. The top-left grouping seems more of a general entrance or introductory area.

Even though there’s little to the content of the rooms itself to give me indications of what to do with this map, figuring out groupings like this at least help me try to form some indication of what I want to do here. Still, with such a bare map, I’ll absolutely need the flavor text for more input.

Information from the flavor text

The two texts pretty much agree on what happened: the players are led through an underground structure by a guide who betrays them by abandoning them in the dark surrounded by enemies.

There’s only minor differences in the NL and US versions: the structure is either a maze or a dungeon, there are dark corridors but perhaps also dim pathways, and the US version makes sure to emphasize that there is a stairwell that represents safety.

A larger version of the US text

Race Against Time

A guide has bought you to an underground dungeon that legends say hides a great secret. He has led you through dark passages and past dim pathways and now ye stand in a room with three doors. Suddenly, the guide extinguishes his torch and ye hear him laugh in the black darkness. “Farewell, my heroes,” he mockingly calls out as he disappears. Ye have been trapped! Escape, or die in this forgotten hole.

My translation of the Dutch version of the text

What is interesting to me is that the players are guided into this structure by a guide with a torch. So, apparently, they would have seen the route here. If that is the case, then how come the players would assume there is only a room with three doors if the only actual exit is a secret door they must have come through to get in? Moreover, if they came in through the stairwell, why wouldn’t they know the route back? Let’s just chalk it up to the Heroes being a little complacement and depending too much on the guide; I guess that’s why the US version chose to call it a maze, so that we may assume that the Heroes got lost.

In any case, we now have a number of prompts for our map: it’s underground, a dungeon or a maze, there’s dark passages (and potentially dim pathways), and it’s a dark, forgotten hole. All of this speaks of neglect to me. So, perhaps this is a map of a long-abandoned dungeon. I like the idea, because the map itself is called “Race Against Time”, and theming the map around a long-abandoned and decayed dungeon seems quite fitting for that—this dungeon lost that race.

A dim and dark map is a bit of a challenge for me. I love the idea of it being pitch-black but that only works well for use in a VTT. If it’s just the visual of a map itself, then having it dark just obscures things. Normally, I’d add a bunch of torches and lights but that wouldn’t make sense for an abandoned set of ruins. This is a place where a bunch of monsters have set up an ambush for the players, so it should be mostly empty. The only means to deal with it would be to keep it dim rather than fully dark.

Translating into a final map

This map was quite a challenge because I’d set myself the idea of having an abandoned and ruined underground structure. Normally, I tend to go far with decorating rooms and setting up their uses, and working on a little storytelling through the environment. This time, though, I would have to be quite barebones with it. On top of that, the Crosshead Studios assets I use don’t have too many broken items in them. It would’ve been nice to include some knocked-over bookcases and so on but I’d have to improve a little.

This time around, the fill in the map would have to come from sets of rubble and plantlife, as well as smudges, dirt, and holes. A few areas I chose to put some more intact items but very quickly that already seemed in too good a shape for this long-abandoned place. What I ended up doing was scaling down a lot of full-sized bushes to almost miniature size to suggest they are slowly growing based on what little light they can get. Fortunately, there were a few fern-like plants in the pack that would make sense in low-light conditions.

The other thing I wanted to make sure to try out was some different lighting options. So far, I’ve been using the standard few lights (a three-tiered wavy light, a standard light, and a fuzzy light) but Krager’s Shadow and Light Pack comes with quite a few more options. So, I figured I wanted to have spots of light in the map to indicate holes in the ceiling, as well as a beam of light or two to vary things up. It would also make sense for those to be there, as the plants would need some light to grow! Overall, I like the final effect, though I think I can improve on those little spots of light and particularly the light streaming in from the stairwell.

In any case, with a little experimentation, I came to this final map:

The final map for this dungeon. Since there are few lighting effects, I kept the map relatively light. However, I picture the map as being quite dark with a few beams of light from the surface, through pockets and gaps eroded away over time.

As usual, I have a larger version of this map available over on Reddit:

Tablet for Christmas

I bit the bullet and ended up ordering a tablet for Christmas, so that I can finally get around to more easily read all those tabletop RPGs that I have. It seemed like such a weird waste to read them at the PC, and reading on my mobile phone just was too small and fiddly to deal with. My laptop may have been a good compromise, but whenever I sit down downstairs, my lap gets colonized by a small herd of cats, preventing the use of any laptop. So, a tablet it is! I hope it’ll work nicely for me.

Homesteading, Permaculture, and American Houses

Tracy and I are intending to use our garden to start growing some crops sustainably. The long planning is to put some raised beds in there, a nice greenhouse, and a chicken coop. It’s a bit of a permaculture, homesteading, or sustainable living type of idea that we’re going for. Back when we lived in Groningen, we had an allotment garden for two or so years, though that was difficult to maintain given my travel times and the accessibility issues for Tracy. Now that we finally have some garden space to ourselves, we can do it in a convenient way, particularly now that we are more financially stable as well.

The interesting thing when researching this is that, like so much of contemporary culture, Americans are quite dominant voices in the space. This, as you can imagine, brings along some interesting cultural differences. For instance, a book that I saw recommended for small gardens was The Half-Acre Homestead. A half-acre—small! Over here, in one of the cheaper places to buy property in the Netherlands, a half-acre plot (about 2km2 about 2000m2 or a plot of about 44m by 44m) would cost at least half a million Euro up to a million Euro, depending on where you buy (about $580k–$1.16m). You’d be buying up an old farmhouse with farmland, and on the cheaper side of things it’d be a delapidated farmhouse at that. The authors of The Half-Acre Homestead apparently found an acre of unused land and settled on it, building their own house and starting to farm on it. The book claims that they have never paid rent or had a mortgage. In the Netherlands, it’d be almost impossible to find 10cm2 that isn’t owned by somebody somewhere. Let alone, of course, that the premise of the book is that they started this somewhere in the ’70s. Now, potentially, this might be deceptive (really, they never had any trouble over seizing land with a municipal government, a landowner, or the federal government?), but whether it’s true or false, I am convinced that the same could not be done today in the Netherlands.

The main points of it, though, are still usable. There are many updated and modernized variants of the book, and adapted versions for more specific living. However, the most relevant informational source we’ve found on home gardening for food production in our growing zone is Spicy Moustache on YouTube. His videos are really realistic as to what can be done in a small growing space in a European and urban environment, and his garden is something I’d aspire to have as well. For an example, check out his latest video:

I love the focus on practical, realistic, and affordable garden solutions.

Slowly and surely, through these kinds of sources, we are learning new ways of food production in more urban settings than we’ve had with our farmplot before. On a more general note, I can really recommend listening to podcasts like The Poor Prole’s Almanac, Live Like The World is Dying, and It Could Happen Here for good information on how to become more self-sustainable. The first focuses more directly on urban food growing, while the second is more about independent living and anarchist theory, and the third is about the potential realities of life moving forward from here.

Both from an economic, cultural, and environmental perspective, we’ve really been prompted to think more about sustainable ways of living. From something as simple as mending holes in clothing and wearing them longer even though it may look a little weird, Tracy wanting to custom make clothing, I wanting to learn how to repair and maintain electronics, to the two of us farming our own food in our front and back yards, the both of us have started to become more and more convinced we need to be more autonomous in our lifestyles. Aside from all the benefits, it’s also just nice to be able to take pride in the things that we are doing.

The More You Make, the More You End Up Making

Creativity has always been interesting to me, because I don’t see myself as a creative person at all. In building games, I always tended towards making the most efficient rather than the most beautiful structures. Professionally, my greatest strength is reducing the complexity of problems to more solveable issues and helping to guide others to move towards solving them. Artistically, I’ve never been able to do much at all, though I’ve tried calligraphy, playing the violin, drawing, and so on. Language seems to be my best creative skill, though not for fiction but rather for communicating clearly. All in all, I’d describe myself as quite uncreative.

One of my main issues would always be the difficulty of thinking of new ideas out of nowhere. It’s so impressive to me how somebody could look at a blank canvas and just decide what to do there. However, now with electronics, it took me just the one big project to learn the basics of electronics, and I’m starting to get more ideas. I’d run into tiny inconveniences and thought: surely, I can spend way more time solving this miniscule issue than I’d gain by just working through it? And so projects were born. Currently, I have the following ideas clunking around, with no specific timeline for when I’ll actually be working on them:

Hamstercage Lights

My current main project is to install RGB lights in all three levels of our hamstercage build. It’d both simulate a circadian rhythm for whenever we get our new hamster, and would have a manual override for when we need light. My main posts on electronics are all about this, so there’s not much new to report there.

Countdown Timer

This was inspired by the Pomodoro timer, as it’s somewhat related but for a completely different purpose. The Pomodoro timer just counts down in small half-hourish increments, to organize working time and to help remind me to take regular breaks. The Countdown Timer was born because there’d be several moments where Tracy and I are working towards a larger goal with a set deadline, such as when we originally moved over here; conversely, there’s also smaller deadlines, like deciding how much time we have until our groceries get delivered. Again, why use just a mobile phone timer when you can massively overengineer a large LED display or 7-Seg display and program it to display days, hours, minutes, and seconds?

Binary, Hexadecimal, Decimal Converter

While I was programming the Pomodoro Timer in C rather than Arduino, I started using binary and hexadecimal numbers more often to directly address memory. In particular, I’d want to set a whole register to specific bits in one go, and using hexadecimal just seems cleaner to me for some reason. What I’d end up doing is going through a datasheet, checking all the right pins for an 8-bit register, and then using a converter online to figure out what the hexademical is for that binary number. Why accept anybody else’s very convenient solution to a self-created problem when I can make it entirely more complex by spending more time? I could just make a small device that shows the same number in decimal, binary, and hexadecimal, and have several knobs or buttons so that I could change each number and the others would automatically change with it.

Bonus: Taglines For the Blog

As I was writing this, I just kept coming up with additional taglines for the blog (huh, additional task: figure out if I can have rotating taglines). Here’s a selection of my favorites:

  • Answering questions nobody asked;
  • Solving problems I created myself;
  • Solving problems nobody has;
  • Creating problems, then solving them by creating two new problems;
  • Breaking things by fixing them;
  • Fixing things by breaking them;
  • Finding out things nobody cares about;
  • Championing pointless causes;
  • Finding a problem to every solution;
  • Putting the “me” in “meaningless”.

Learning About Flux

I’ve read that flux is a useful thing to use when soldering, but I never really knew what it does or what the real uses were. I was aware that it helps solder stick, and that the usual soldering tin I used contained flux, but I just wasn’t sure exactly what it was or when to use additional Flux. The advice I read most often was when you try to solder an SMD chip, flux is really handy to drag solder pins. However, that just tells me when to use it, but not what it does. However, I saw a simple video that really drove the point home to me. It simply shows examples of soldering with and without flux, and changes some variables around so you can directly see the effect. Now that’s some educational material!

Testing Out RGB Manual Control

I’ve been thinking about how to control the hamstercage light project, and what is really needed. My first idea was to see if I could control the project via WiFi, perhaps by using an app (via Blynk, likely). However, seeing as Blynk uses a freemium model, I felt reticent to go ahead with it. After all, what if Blynk changes its terms of service? What if what I need takes a monthly payment? What if adding a second user isn’t possible? I don’t like trading ownership for convenience, so I’ve decided to abandon that idea. That did mean I had to thoroughly consider alternative controls.

As I’d considered before, I quickly settled on manual controls. After all, the idea is to automate the hamstercage lights nearly all of the time, with exceptions for when we want to see more clearly into the cage (for cleaning, or finding the hamster). Clearly, we’d be next to the hamstercage when we’d want to have direct control of the lights, ergo having manual controls makes the most sense. Doing a quick read online made me conclude that the usual means of controlling RGB leds manually is using potentiometers. Fortunately, I had a few ones lying around, so I quickly wired something up to test:

Figure 1: The breadboard test of controlling RGB lights with potentiometers

I’m breaking a bit with my usual color conventions here, as I’m using black as ground and orange as 3.3V. The WS2812B take 5V but I figured this would work well for the time being. You may notice that I also don’t have a resistor between the powerline and the WS2812B LEDs right now; that’s firstly because the setup wasn’t working when I started, so I reduced components to see when it would work, and secondly because the 3.3V certainly wouldn’t exceed it’s Vmax of 5.5V in any case.

The ESP32 has a really nice number of ADC pins (which I’ve learned stands for Analogue to Digital Convertor), so I had a bevy of choice to connect the potentiometer to. Essentially, the ESP32 compares the voltage from the middle pin of a potentiometer to 3.3V, and then outputs a value between 0 (for 0V) and 4095 (for 3.3V). Since the WS2812B takes a value between o and 255, it’s a simple case of dividing the value from the ADC pin by 4096/256=16 (The off-by-one programming mistake isn’t catching me here!). That gives me three 8-bit values to put into the RGB LED.

After some uploading problems (I had not connected the ground pin, which apparently was a problem for uploading to the chip), I had a working prototype. This setup managed to control the color decently, though I didn’t seem to get as much color variation as the FastLED library demo gave me. Moreover, the results were a little inconsistent. The cause of both issues would be the potentiometers. Firstly, the values aren’t precise, which of course the FastLED library demo does have, seeing as the values are specified in code rather than by analogue input devices. So, when I’m turning a potentiometer, the numbers go up in rather large jumps. One challenge to overcome, then, is to get a better resolution (for lack of a better word). The second problem I ran in to was that the color seemed to flicker a little, which again I attribute to the potentiometers. The potentiometers I’m using are not quite a comfortable fit in the breadboard, and I suspect that the connection they make is shoddy. I noticed that there was quite some wobble to them, and if I’d touch them, the hue would change.

All in all, then, I’d call this quite a succesful test. I have a proof of concept, in that I know I can control the colors of the LED strip using potentiometers. The follow-up is to get better control. The next test I want to do, however, is to work on the WiFi-side of things, and test out getting the current time from an NTP server. Once I’ve tested that, I’ve established all the ground principles I need to create the hamstercage light project, and I know I can start working on refining all the individual elements of it.

First Experiments with RGB and ESP32

The past few days, I’ve been experimenting with both RGB LEDs and ESP32. I’ve never worked with either before, so I wanted to get some experience with the basic functions before I dove into the more complex task of building the hamstercage lighting.

My first experiment was trying to get the RGB LEDs working. I have a strip of 60 WS2812 RGB LEDs, which are one of the apparently two common types of RGBs. The WS2812 distinguish themselves by having some manner of IC included in the strip, so that there’s a single data line in along with the power and ground, making coding quite easy. The other most common RGB strip also includes a clock signal, so that still seems fairly elementary. To get this working, I hooked it up to my Arduino Uno clone, added the FastLED library, and loaded up the first couple of examples. Everything pretty much worked without a hitch, which was great. About the most complex part was that the examples mostly used pre-defined colors (::red, for example) whereas I potentially want to use a whole host of RGB values. However, one quick online search and that was already solved.

ESP32, however, was a little more tricky than that. My first very practical problem is that the breakout board is just slightly too big for my breadboard. I can only just about fit it on one, leaving a single row of headers for additional pins. Nevertheless, that’s all we need to test the single RGB strip. The bigger issue was trying to figure out the pin-outs of this board. There seemed to be a number of potential pinouts provided online, and they just didn’t seem to work for me. In fact, nothing worked until I switched to a different example – I guess I must have messed something up in the example, causing all my other issues! Once I fixed that, the pin-out diagrams seemed to make sense again, so that was one hurdle taken.

However, somewhere in this testing, I seemed to have messed up one of my ESP32-WROOMs. I’m not too sure what’s going on, but it’s no longer registering on the USB port. However, I’d bought three of the chips (potentially for three separate parts of the cage, though I appear to not need that), so a secondary one took its place. I’m noticing that the problematic ESP32 has a rapidly blinking LED, which may be a hint to its condition. If I press the boot and enable buttons at the same time, I can upload a program again, but as soon as it’s reset, the chip seems stuck again and the LED is back to blinking rapidly. It’s possible that while I was probing the board with my multimeter, I may have shorted something, I’m assuming. However, for now this will remain a mystery.

Having tried out the basics of RGB LEDs and the ESP32, and being able to light the LED strip with any RGB value, I have two of the three fundementals ready to work on my hamster cage project. The last one is a way to control the lights. The most basic option is to provide some physical controls at the cage. This is quite sensible, as there’s no need to control the lights unless we’re at the cage doing something. The second option is to use Blynk. Blynk is some manner of visual app development program that has interface possibilities with ESP32 chips built-in. It seems like an easy way to make an app, but it also comes with a rather limiting fremium model that I’m not a fan of. We have the features that it offers right now, but how long before those become premium features? The last option is to personally write some manner of HTML interface. I’ve looked into it, and making an elementary one doesn’t seem too complex. The most difficult parts (having a slider for the RGB colors, for intance) are already worked out in basic java snippets available on countless forums. I like the home-made aspect of that, though it may make the controls a little less polished.

I’m not too sure what route I’ll end up taking but whichever route it will be, my next step has to be to control the color of the LEDs live in some form or another.

Adjusting my Knowledge of Schematics

A little while ago, I posted about learning new things about schematic design. In short, I followed a tutorial that encouraged clear schematics by using many net labels in the place of drawing out wires. In particular, they connected net labels directly to the PCB, and had everything defined separately from that. However, I’ve come to find out that this is a bit of a debate in the hobbyist electronics world. I was reading the following post on Reddit that shows an example of the discussion in the comments:

A Reddit thread where someone posts their schematic, which makes heavy use of net labels. The discussion about this in the comments was quite educational for me.

The discussion centered around the balance between clean and clear schematics. Separating everything out with net labels will certainly make schematics clean, as there will be a minimum of crossed wires or cramped symbols. However, the downside is that this will reduce clarity. I followed a suggestion in the comments and tried to trace a signal through the schematic. I have to admit, it was pretty tricky – I checked a pin, and then read the net label, followed by having to scan the schematic to find that net label again, only to see that there were two other net labels involved. As a result, it was pretty tricky to see what the internal connections were.

It seems there’s a pretty clear divide on the topic, as evident in the discussion as well. Some people will say that leaving as many wires in the schematic will aid readability, although they’ll also say a schematic should have as few crossed wires as possible. The consensus seems to be that some common sense should be applied in choosing when to use labels. In the case of this schematic, there’s an example of a label being used for no reason at all, apparently, as this person points out:

This user identifies three components that are right next to each other on the schematic, but connected via labels rather than wires.

I can wholly understand their comment here. These components were literally adjacent to each other and nothing else, and connecting them via cables would cause very little trouble at all (one connection to ground would have crossed over a signal wire but that’s it).

In the case of my Pomdoro schematic, I’m thinking that I may have doubled up on methods to clean up my schematic. For instance, I used both buses, wire labels, and global labels. I could have stuck with only wire labels, and perhaps adding buses to still draw a line but collate the five wires into one. Furthermore, it makes sense to me to separate out the power section of the schematic. It’s a functionally separate part from the main schematic. The same goes for the ISP programmer – it’s a side issue to the main function of my device. However, I’d also separated out the LEDs from the microcontroller, even though that’s the main point of my entire Pomodoro timer.

Figure 1: The Pomodoro Schematic

It’s a good lesson for when I make the hamster cage lighting system. I’m not bothering to rework this schematic again, but if I would, I now know what I’d do better.

  1. I’d edit the ATtiny84 symbol to put PB3 on the left side of the symbol. After all, it’s an input to the microcontroller, so it makes sense to me that the signal goes from left to right.
  2. I’d not use net labels for TimerLeds and PomodoroLeds, but rather use the bus wire to connect the LEDs somewhere to the right of the ATtiny84.
  3. I’d use the small versions of the symbols to create a little more space on the schematic.
  4. I’d have the wires on PA5 and PA6 connect directly to the relevant switches. Those are their main functions, after all, whereas the MISO and MOSI are secondary connections and should be branches off that.
  5. Similarly for PB3, where I’d have it connect directly to the RST label, and have the pull-up resistor be a branch upwards.

Learning About KiCad and Schematic Design

The next project I’m going to be looking into is the RGB lighting for the hamster cage project (post about the cage; post about the intended design). I’m now back at the usual first stage of my projects: experimentation. This is usually the time where I just hook things up, see how things work, and generally mess around. To give you a rough idea, my experimentation now will be getting the ESP32 to connect to the WiFi; then, I’ll try and get an LED to blink; lastly, I’ll try and get the LED to blink depending on whether I’ve sent a command over WiFi. As you can see, it’s step-by-step increasing the complexity, until I am where I need to be.

The next step, usually, is design. Once I’ve tested out all the individual bits of my final project, and I have a rough idea of how to do it, it’s the time to bring it all together. My first step is always to make a schematic in KiCad. As usual, before I start I try to learn a little bit more and apply at least one new thing before I get started. That’s why I was so happy that I found this video:

A video by Phil’s Lab, showing the full process of hardware design

I’m only about half an hour in so far, and I’ve already learned a tremendous amount about net labels and sectioning off components, as well as just some handy KiCad tricks. Just for that alone it was useful to me, and I still have two more hours of the video to go right now!

Aside from that, I wanted to find a good solution to the mess of wires I had in the Pomodoro design. The outputs for the ATtiny84 were all so close to each other, and some had to move upwards while others moved down – it ended up as a large bowl of spaghetti (a tangled, disordered mess of wires or connections are often informally called spaghetti, for obvious reasons). Yet, there are two clear bundles of data in the Pomodoro timer: the two sets of LEDs. So, I looked up how to do bus wires, leading me to this post. It’s an explanation of how to apply bus wires in KiCad, and using wire labels to connect everything together. That way, you can get a clear schematic, and KiCad can still read it and build a rat’s nest out of it.

When I learned these things, I just had to stop the video and apply this right away. The only schematic I had lying around was the pomodoro one, so I figured to just test out the process:

Figure 1: The original Pomodoro r2 schematic

Now compare the old schematic to this new one that has all the lessons applied:

Figure 2: A revised Pomodoro r2 schematic, applying net labels, bus wires, and outlines for sections

What a difference in clarity! No more crossed wires, and several subsystems are clearly separated out to their own space. I greatly prefer this schematic. The only downside I found was that the labels are later on also used in the PCBNew program to label the actual traces. Now, that may be quite a useful feature later on, but it also causes a little confusion. Take a look, for instance, at pin 7 (PA6): it’s both MOSI as well as the Pause/Reset switch. Now, since I applied the MOSI label to it to connect it to the ISP, the whole trace was called “MOSI”. However, I’d much rather apply that label only to the trace leading to the ISP, and Pause/Reset only to the trace leading to the button. Maybe that’ll be possible, maybe it won’t. More to learn!