When your schematic has a large number of related signals, it is helpful to group them. In its schematic editor, KiCad has a few tools to help. Your end-goal helps determine which tools to use. For example, do you need a KiCad bus or a label? In this post, I explore how you can define signals, group them, and reference them across schematic sheets.
Up until recently, I did not need to use a bus or multiple sheets. However, the Apple IIgs project I’m working on is too large for a single page. In a KiCad live stream, I looked at how to create busses and connect them. In a separate tutorial, I will show how to work with multiple sheets in KiCad.
tldr; KiCad does not require the use of a bus to connect signals together. Wire labels already provide that connection. A KiCad bus offers two things: 1) a visual representation and 2) an easier way to create global connections (across sheets.)
Before jumping to how to use a bus, first, we need to start with the basics. KiCad connects nodes with a “wire” element. KiCad gives each wire drawn a unique name unless it connects to an existing node. The user can override the name by adding a label.
A new project I have started working on involves the Apple IIgs. It was Apple’s last 16-bit (and 8-bit) computer. Inside are many application specific integrated circuits, or ASICs, that make the IIgs an extraordinary member of the Apple II family. One chip, in particular, is called the “MEGA-II.” This chip takes all of the individual logic chips from the original Apple II design and incorporates them into a single 84-pin PLCC.
The project I have in mind needs the MEGA-II. I need to design some printed circuit boards for it and a few other IIgs chips. That goal means I need at least one custom Kicad schematic symbol. I plan to create a custom library of Apple IIgs components.
Like other computers from the same era, complete schematics are available. However, they are not in a modern format. Since I need to create symbols for so many of the chips as it is, I may end up re-creating the entire IIgs schematic.
For now, here is the process I use to create custom KiCad schematic symbols and parts.
There is a project that has been sitting on my “to do” list for too long. My lab notebook has several dedicated pages for it. But I have not made progress. I decided to take some advice I have given to other people. When you’re stuck on starting a task, break down the project until you find a piece small enough you can get it done with no problem.
The project involves the Apple IIgs. It was Apple’s last 16-bit (and 8-bit) computer. Inside are some application specific integrated circuits or ASICs that make the IIgs. The name with my attention is named “MEGA-II.” It takes all of the individual logic chips from the original Apple II design and incorporates them into a single 84-pin PLCC.
Looking through my parts boxes, I have counted at least 15 distinct “Arduino boards” in my collection. Either they are variants of the Uno form factor or they have different processors from the 8-bit boards. That number easily goes to 30 if I include boards with just the “Arduino header” on them. This pile of microcontrollers got me thinking, how does anyone ever choose the right board?
For example, I have had several people tell me the ESP32 is the “ultimate Arduino.” But is it? Well, yes and no. Extra hardware you do not need can lead to complexity and unexpected behavior. When using an advanced module like the ESP32, it is important to learn how to use sleep modes to limit current consumption, especially for battery applications. But if you need WiFi, Bluetooth, I2C, SPI, UART, and high-performance processing, capacitive touch, GPIO, and analog inputs then the ESP32 is an obvious choice.
In the past, I’ve covered how to reset Arduino millis() and have provided a growing list of examples using millis(). While reviewing the code for the elegoo Penguin Bot, I was reminded of a millis() mistake I see often: addition. The only way to properly handle millis() rollover is with subtraction. Let’s look at why (and how.)
What is Arduino millis()
The Arduino library has a function called millis() which returns the number of milliseconds the processor has been running. On other platforms, you might see references to a “tick counter.” It is the same idea. A hardware timer keeps incrementing a counter at a known rate. In this case, that rate is milliseconds.
A mistake new programmers often make is trying to “reset millis().” A better method is to compare two time-stamps based on millis(). So this if-statement is comparing a previous timestamp to the current value of millis().
Recently I received three packages from Elegoo Industries. They are a company based in Shenzhen China. Before those packages, I noticed there name several times on various electronics kits on Amazon. They asked me if I’d help them with a video that shows how to assemble their latest creation: Penguin Bot.
There is not much point in sharing that video with you unless you’ve purchased one. So instead, here is my review, or hands-on, of the kit. I will, however, show you a short Instagram video I made to show off Penguin Bot’s cuteness
Learning to use a new oscilloscope can be daunting. In this video, I show 5 measurements you can make using just an Arduino as your DUT. Learn how to offset voltage, setup measurements, enable infinite persistence, save reference waveforms, AND trigger (and decode) serial signals. For this video, Rohde & Schwarz was kind enough to send me an RTM3004. This video is a follow-up from an ealier blog post which featured 6 scope measurements you can make with an Arduino.
Making tutorial videos and project videos is a very different process. It is very easy to script a tutorial. In fact, I think it is a necessary step. Project videos, on the other hand, are more organic. In this project, I build a capacitive activated coin bank, based on this Coin Acceptor from Adafruit. It uses an MSP430 to do capacitive sensing and then a Pryamiduino to control the rest of the electronics. In the end, I do some classic AddOhms special effects to demonstrate how the project works. For detailed notes and design files, hit the button below for the element14 project page.
In this post, I briefly touch on the difference between an FPGA and a microcontroller. Then I walk you around the MKR Vidor 4000’s board. Using one of the examples, I talk a bit about how the various chips communicate with each other. This section also highlights what makes the Arduino FPGA board different from other development boards. Lastly, I answer “should you buy an Arduino MKR Vidor 4000?”