One of the biggest advantages of ESP32 development boards (without even counting the speed, flash size, WiFi, Bluetooth, and two cores) is that they come in a variety of shapes and sizes: bare boards, with OLED, with color LCD, with LoRa chipset, with GPS modem, etc., etc. And finally, you can get them with an e-paper display.
When Espressif release ESP32 WiFi & Bluetooth capable MCUs back in 2016, many things changed in the DIY and tinkerers community. We finally had a cheap MCU that could do real IoT stuff and was easy to use. However, the cheap ESP32 is not really cheap in relative terms. Sure, it is cheap, but there are cheaper solutions. ESP8266 for example.
Yes, the old ESP8266 that lacks any built-in security and which power consumption is not that low even in a deep sleep mode. It was expected that Espressif would, sooner or later, offer an improved replacement for ESP8266. Cheaper than ESP32, but with features that ESP8266 lacked. Continue reading “Espressif ESP32-S2” »
ESP8266 and ESP32 are the next best thing that happened to DIY world since Arduino itself. Thanks to development boards based on those MCUs brand new possibilities opened in front of all DIY and tinkering enthusiasts. With those two, not only we have cheap and powerful microcontrollers, but we can also make them talk to other devices via WiFi and Bluetooth.
All flight controllers we use in RC hobby (FlightOne, Betaflight, INAV, Pixhawk, dRonin, and all the other) use low pass filters. What does a low pass filter do? It passes low-frequency components of a signal (below cutoff frequency) but attenuates high-frequency signal components (above the cutoff frequency).
Since it’s hard to make a visualization of this process with a software LPF filter, let’s make an analog equivalent using a resistor and capacitor and connect all of that to signal generator and oscilloscope.
Why do we match the impendance? And what the heck the impedance really is? 50Ohm, 75Ohm, low impedance, high impedance, reflections and all that crap that normal people usually ignore. Nobody said that we are “normal” over here so let’s take a look at this whole input/output impedance matching business.
One of the first projects I did with ESP32 development boards is a simple GPS tracker. OK, it's not really a tracker since it does not store the position anywhere, more like distance meter with a UBLOX Neo-8M Beitian BN-880 GPS unit and small SSD1306 OLED display.
This ESP32 GPS Thingy as I call it uses one button to store current position and then report straight line distance, speed and altitude compared to "Home Point". GPS communication is handled by TinyGPS++ library.
Oh, one the best things about ESP32 is that you can map ports to almost any pin you want. It's not like on ATmega328 where UART and I2C are always the same pins. Here you can choose them. How nice is that?
Code is available on GitHub.
However fond of good old Arduinos based on ATmega328 and ATmega32u4 we might be, no one can now say they are state of the art. Sure, they might be the first choice to do something cheap and simple, but compared to most more modern designs, they are just too old and too weak. Slow, little flash memory, little RAM, no built-in connectivity: no Bluetooth or WiFi.
If you really really want, you can solder without flux. But it is a painful experience. Almost all modern solders have flux integrated into its core. And as long as you do not try to solder anything big, it’s enough. Of course, sometimes it is not enough and you have to help yourself with additional flux.
My favorite solution lately is a flux pen. Like Stannol x32-10i
CC1101 is another example of modern radio modules. I might not have the receiver sensitivity or LoRa SX1276, but with proper antennas should give more than 1 km of radio transmission. Recently I got a couple of them, so expect some new projects with CC1101 and Arduino.
Now, something that took me some time to find out, so you will not have to: CC1101 pinout:
One of the things I like about Arduino ecosystem is that you can prototype pretty decent device in very short time. It might not be pretty, but will work. Just like my DIY hygrometer built with DHT11 and SS1306 OLED display I’ve built few weeks ago:
Simple, efficient and runs on 4 AA batteries. The best part is that it can be powered all the time. Arduino does humidity measurement, display the result and then powers itself down to conserve power. Cool, right?
Code is available in GitHub repository.