Because I do. Look at following pinout diagrams. Which one do you like more?
Let’s start with a disclaimer: This is a one afternoon project, without a lot of planning, made only from home-available supplies.
As I wrote in the previous article, I organized a night game for K-SCUK 2016 few weeks ago. The message of the game was clear — nothing complicated, just “wow”. To accomplish this task, I wanted a stage with technical gadget. The idea of the Morse Thing was born.
Let’s start with a disclaimer: This is a 4-day project, without a lot of planning, made only from home-available supplies.
I’ve been helping to hold K-SCUK (a week long outdoor seminar for high school students interested in informatics and biology) for few years now. This year was no exception. I was put in charge of the night game, which was supposed to uncover some information about K-SCUK background story. I decided to go for a simple game with “wow effect” instead of a game with sophisticated rules and deeper message. I wanted a simple and enjoyable experience for the contestants. To accomplish that, we prepared linear route in a forest with several stops featuring a simple task (a cipher for example). This alone wouldn’t be enough to provide a memorable “wow” experience.
In my previous article I briefly showed the way I store and organize my SMD components. Even it is way better than storing parts in labeled plastic bags, in which the parts are usually shipped, it is still far away from being perfect. I was already looking for a better solution for a six months or so, when I finally found two products, which seemed like a possible solution – Aidetek Box-All Cases and WenTai Boxes.
In the last week I’ve been working on a device, which uses an electronic compass. I chose HMC5983, so no rocket science happening – I used the recommended layout, made a prototype PCB, populated it and wrote the firmware. Everything went smoothly on the first try.
Then I adjusted position of the components on the board, repositioned few wires and made a batch of 6 new PCB. After I populated them, the compass stopped working – the X axis showed fixed value, the other one were working properly. Strange, right? If it was one board, I would thought about damaged component. But all 6 boards featured the same behavior. After two hours I finally localized the cause of the troubles – a piezo buzzer. At least I thought it was a piezo buzzer.
My board uses a pizeo to notify the user via beeping. I used the standard 12 mm piezo in a plastic housing:
I use SMD components in my projects whenever it is possible. I like when things are compact, look professional and also I hate drilling PCBs. Also many modern components aren’t available in other packages. However with bright sides of SMD components comes the dark side — the storage.
You need several hundreds type of components to do something meaningful. The components are small, come in similar packages usually with no labeling (capacitors, inductors, SOT, QFN — all of them have no, or at least not fully descriptive label). Putting them in a one large bag isn’t a good idea. Once you loose track what kind of component is it, you can throw it out. Sometimes it can be measured, but usually the time doesn’t worth the money.
I used to keep my components in the original carrier tape, usually with a handwritten label. All the tapes were in several plastic bags. After my collection of components grew up a little bit, this kind of storage was unusable. Lookup a component of a particular type was time consuming, reading small, often blurred hand-written labels, was a pain. Maybe you know it by yourself.
ESP-12 modules are great for integration to custom product as they fit nice on a PCB. However the prototyping process can be painful due to the incompatibility with standard 2.5 mm pin headers. You can use a full development board like NodeMCU with all its imperfections (size, high current consumption1 compared to ESP sleep states, mismatched pin names 2, etc.) or you can take a soldering iron, wire and do all the necessary wiring as a “3D post-modern artistic piece from a copper wire”. To remind; ESP8266 requires several GPIO pins to be pulled-up or pulled-down in order to boot from flash memory or to enter a bootloder (see ESP8266 Wiki for details), so a little bit of wiring is unavoidable. In some cases you might want to attach a voltage regulator.
A few weeks ago I run into a strange problem — when I was playing with ESP8266 and Arduino Libraries, suddenly my program stopped working. Random characters were appearing on UART (Arduino
Serial). Also it was almost not possible to flash the chip via the UART. “Ok, I blew up the UART somehow,” I thought. Today, the problem appeared again, so I replaced the module with a new one. After few minutes, the I observed the same strange behavior – random characters appeared again. What?
Because I didn’t touch the module, I started inspecting what’s going on. I revisited all the connections and all the Dupont cables. Everything was fine. As a last desperate try I lowered the upload speed from 921600 Bd/s to 57600 Bd/s. The chip came alive!
I haven’t inspect properly, what is the cause, yet. It seems to me like there might be an interference on a the cheap Chinese Dupont cables during high speed upload and the uploaded program can get corrupted (and so the ESP might be stuck in a loop of fault handlers).
Next time, when you think you blew your ESP8266, try lowering upload speed first!
GPS is a really nice and quite cheap technology – unless you want accuracy in orders of decimeters or centimeters. Yes, there are high-accuracy GPS receivers which can achieve such an accuracy, however the price of the cheapest one is starting at $500. Not really a something a hobbyist can afford/is willing to pay for.
For many application there’s no need for absolute position, a relative position of 2 or more GPS receivers is sufficient. Take an autonomous robot moving in outside area as an example. You can setup a fixed ground station and navigate it relative to it. The intuition tells you that measuring relative position should be more accurate (when we’re talking about station less than 500 m away from each other) that measuring the absolute position int the WGS-84 system.
Why? The most of the GPS receiver’s accuracy depends on the atmospheric delay (the time the GPS signal travels through air) and it should be pretty much-less the same in a small ground area. So, having two the same GPS receivers, which uses the same antennas and algorithms for position measurement, should produce the same results, right? Well, kinda.
There are many papers out there about relative GPS position measurements. I’ve read several of them and none of them and I have to say they were bad. All of them were very shallow with lots of motivation and no results (don’t even think about public implementation!). I gave up reading (for now).
Almost daily I come to problems I’ve seen before. Usually I have solved them successfully, but I struggle to remember the correct and effective solution when I need it again. I have also created lots of gadgets and devices, which usually after some time end up stacked in a box. And no one, even myself, think of them again. I think it’s a pity.
This is why I decided to start this blog, called “mind.dump()” – to make a dump of my mind, thoughts, ideas and experiences. To archive them, make them searchable and also to share them. I profit a lot from others’ experiences, they shared, in my work, so I think it’s right to do the same and possibly to help others.
Expect posts about programming, electronic, computer science, robotics, CNC machining and others.