• I've got some PCBs from PCBWay!

    Dávid Máté01/14/2023 at 15:23 0 comments


    At the end of the year I've got contacted by PCBWay, that they found this project novel and creative, and they'd like to sponsor me with some PCBs. I've used PCB prototyping services in my life before, but this is the first time ever I've got a sponsoration. As I didn't want to let this chance go to waste, I quickly drafted a PCB design and sent it to them (in hindsight, I was a bit too quick about this, but more on that later :) )

    Service quality

    Their site is pretty straightforward. You put in the parameters of the order, upload the gerber files, and after a quick review phase from their team, you can put in the order. And boy, they support a LOT of different designs! You can choose many different materials, many different thickness, and they support designs up to 14 layers! And there are many solder mask colours to choose from! There are really countless options, I can't even grasp some of them as a hobby circuitrist! But this just means they can provide to everyone. As you can order from at least 5 PCB up to like 10k, they can even support larger companies.

    They can also make you stencils for smd soldering, and they provide assembly service as well, so they are a one stop service for circuit related stuff! I didn't choose a stencil this time, as the current PCB only has four SMD pads for two 0805 resistors, and I'm perfectly fine soldering those without a stencil.

    After I've put in the order, it took roughly 10 days to arrive to my door.  They took pretty big care about packaging, so the boards won't be broken or chipped of. I forgot to take a picture, but the boards were inside a vacuum sealed bubble wrap, which was wrapped around with these packaging foam sheets, and all of this was in a sturdy cardboard box.

    I've got 10 PCBs, and I've chosen "Matte black" solder masks, as those look awesome in my opinion. They all look perfect and are working perfectly.

    So to sum it up, I'm very satisfied with PCBWay, and I can only recommend them for your projects! :) And Liam, thank you for reaching out, and granting me this chance! :)

    The first version of the PCB

    As the project is still in under heavy development, I didn't want to go with bare ESP-32 modules, as the devkits are more easy to swap around. I didn't found a proper footprint for the NodeMCU ESP-32S, so I drafted my own. Sadly I managed to mess up the dimensions, so the distance between the two columns is 2.54mm larger than they should be, so I had to bend the legs of the devkit a bit, and solder the female headers a bit slanted. Lesson learnt: ALWAYS print out your PCB design 1:1, and measure the things again before sending it to manufacturing. Apart this problem the whole board is functioning as it should. As you can find two different types of GC9A01 displays on Aliexpress, with one of them having 7 pins, while the other has 8 pins in a completely different order, I've designed two different headers on the board 180° apart. I've also added a rotary encoder, as most indicators have a small adjustment knob on the corner, like this:

    Heading Indicator (14v Electric) The finished board looks like this:

    Front side of the assembled module
    Backside of the assembled module
    There is also a two pin header for power in the future, as I'm planning to utilize the devkits in a mesh network.

    I've corrected the distance of the headers, and attached the schematic and the gerber files to the project, if anyone wants to give it a go! :)

    That's it for this update, I'm currently drafting some casing for the module, and will update the project with the stl files once I'm happy with them.

  • I've managed to make a somewhat working Atittude Indicator. Still need to refactor the code

    Dávid Máté12/28/2022 at 21:53 0 comments

    Working Attitude Indicator

  • First version of the display is done

    Dávid Máté12/27/2022 at 18:31 0 comments


    I've always wanted some flight simulator equipment at home. Of course one could always buy some setup in a shop, but I prefer building my own stuff. I've already made myself a rudder pedal, and a throttle quadrant. I also have an ongoing project for the radio stack as well, but the most important step for me is to make working gauges.

    Of course one could go to ebay, and purchase some real avionics, fiddle with it, and call it a day, but it's pretty expensive. So I bought some GC9A01 circular displays.... 

    On a normal plane, there are six primary instruments ("six-pack"), which are necessary for a good flight. These are:

    • The Attitude Indicator
    • The Heading Indicator
    • The Turn Coordinator
    • The Airspeed Indicator
    • The Altimeter
    • The Vertical Speed Indicator

    From these six, the Airspeed Indicator, the Altimeter, the Vertical Speed Indicator and the Turn Coordinator are pretty simple. We have a static dial in the background, and some moving hands. (Well, actually the Turn Coordinator is an exotic animal, but I'll address that in the future hopefully)

    The Road to the current status

    The problem arises with the Heading Indicator. It has a static plane in the middle, and the dial itself rotates. When I first tried to tackle this problem, I've used an ESP8266. I've been using TFT_eSPI as my main library. It can draw rotated sprites, but it needs to be in the RAM. For the GC9A01 this means 240*240*bpp. The 8266 simply aren't enough for this task. I've tried to use the Arduino_GFX library, I even wrote some extensions for it to be able to draw rotated text, but at the end of the day I still felt that I should upgrade the microcontroller. So I've bought a bunch of ESP-32S. After I managed to get the connections correctly, and had something on my display, I've loaded my original code. As ESP32 has 4 megabytes of PSRAM, we are not so tight on memory budget anymore. The process was the following:

    1. Draw the rotated dial
    2. Draw the plane
    3. Repeat

    The problem with this approach is that the plane logo will flicker, as it's drawn after the dial is drawn. We can easily solve this by allocating a sprite as a framebuffer, and draw the two sprites on it, then draw the framebuffer sprite on the screen.

    This means we need another sprite which is 240x240. The current version will only work if the dial is loaded on an 8bpp sprite. I'm still not really sure why, but I'm happy that I see my dial rotating without flickering.

    What's next

    First I'll try to draw some more appealing dial, as the current one is a bit botched :) I've been using LCD Image Converter to convert my 32 bit png to RGB565, and somehow the colors aren't in the order that they are supposed to be, so I hacked the image, removed colors, and it's not really good looking.

    If that goes well, I'll address the previously mentioned issue with the 16 bit dial not drawing. Maybe indexed colors will work better.

    After I'm satisfied with the result, I'll write some interfacing code with the SimConnect SDK, so I can see the results real time.