TinyPICO – tiny fully-featured ESP32 board
tinypico.com
tinypico.com
I suspect they'll lose many people that way, since it's not clear the thing is even for sale unless you stumble upon it somehow. Is this an open source make-your-own-board thing where I get a BoM and CAD files? A buyable product? It's not clear at all from the site design.
Disclaimer: The design is responsive. It disappears at lower screen widths. There's a subtle menu in the top-right, and the bottom of the menu hides the "buy" button. It's fine if you're running a full-screen browser window on a desktop.
Cheers :)
I dislike pushing "buy" too, but I like being able to find it, or at least knowing it's for sale. Most people coming in will have no idea.
Two more proposed changes:
1) "Getting started" presumes I have a device. I don't. That's obnoxious. The first step in getting started is buying a device (or, for other projects, ordering a PCB and a BoM, or otherwise). The first thing I want to know is:
- Is it for sale, or do I build it myself?
- What should I buy? Nano? Normal? Do I want any accessories?
- Where should I buy it?
2) In your github repos, you link to a store. It'd be nice if you said what you were selling in the lik "Or by buying the TinyPCIO or one of our other products on tindie or our own shop." This clearly contrasts with e.g. selling t-shirts and swag, build kits, or otherwise. And yes, many open source projects support themselves in part by selling unrelated swag.
I'll have a FeatherS3 and ProS3 out as soon as he ESP32-S3 is released.
It looks like this is someone else's work, so I've taken Show HN out of the title now. If I got that wrong and you're the creator of this project, let us know and we'll be happy to put this back in the Show HN category.
I just drilled mine with 1mm drill bit.
How does this compare to other ESP boards that are made for low power consumption?
Now, the TinyPICO is more expensive than some ESP32 boards but that's because it's been engineered well and is manufactured in Australia by a maker that goes out of his way to support his products.
The benefit of the tinopico is build quality, physical size, more ram (4M instead of 1M if I remember), and battery life, and a three color led on the board instead of 1 color . For a small quantity home project where any of that matters, like a wearable, tinypico is good, if it is a plug in system where a centimeter doesn't matter, I chose espressif, who is the company who builds the chip and does the support (esp32.com) and open sources the dev environment.
In one project where we needed 100 controllers we ended up on esp8266. It was a few years ago ('19) when prices were a little higher. We bought them on AliExpress and had a high failure rate (50 pct?) And still did ok because they were 2 bucks each. After throwing away the doa ones, they were perfectly reliable. Project success, and 25 buck parts would have blown budget.
* Those cheap ESP32 boards are a massive pain to flash and do dev work on because they use cheap usb serial interfaces or omit them entirely. The CP2104 is much more reliable and the TinyPICO has properly implemented the DTS triggers to put the board into the right mode when you flash it.
* The pico uses a high performance micro antenna rather than a basic strip line so your wifi connection is also more reliable.
* The pico has a much better LDO and power supply - one of the biggest headaches with cheap ESP32 boards is power brownouts during wifi negotiation.
* Those cheap ESP32 boards all implement the exact same transistor based reset for DTR/RTS, they all work with `idf.py monitor`
* There are many options for ESP32 dev boards with an entire external antenna
All that leaves is... the LDO? Brownouts are solved by power caps, or a shorter USB cable. Or providing external power over VIN. Is that really worth double the price?
Like, if you're shipping it in a product you're probably not using a dev board (I hope you're not)
If you're just developing a prototype or tinkering, this is just like Arduino boards. High price, questionable benefit.
If you need extremely low power usage, get a plain module and one of the breakouts that lets you choose the LDO.
TinyPICO has 4MB Flash and 4MB extra PSRAM on top of the 520k SRAM plus the rest.
Esp32 is very common for led controls. Leds are usually plugged in. For those uses, tinypico buys me less than I hoped.
It doesn’t look that much smaller I don’t think?
Edit: The ones I’m using are about 28x58mm. This one is 18x32mm. My standard one is about 2.8x larger.
WiFi, lots of built in hardware (temp + humidity, light, microphone, buzzer, buttons, LEDs, etc), and CircuitPython means you can program it with a USB cable and a plain old text editor.
More bucks than the "smallest ESP-whatever" dev board, but handy for learning.
It may be more bucks, but it's still cheap for the amount of documentation you get. Plus, you only need one, and then you can graduate to the cheap ESP32 boards.
Here is what I see, a board that one solders header pins into that can then be plugged into a solderless breadboard where jumper wires are used to attach it to other interesting peripherals.
To me, this seems like the new preferred way of doing "Arduino" which no longer refers to a hardware standard so much as it is an integrated development environment connected to the device of through USB and programmed in a somewhat C++'ish dialect of a computer language.
Typical curriculum for learning is to use pre-existing "sketches" (programs) with pre-existing board or processor specific "libraries" to implement behaviors from the simple (blink an LED) to the complex.
An alternative curriculum/universe are the mBed boards which are supported by ARM (and are pretty much all ARM based boards rather than a variety of architectures like Arduino currently supports).
So my questions would be what are you trying to learn, and what constitutes "fully featured" in your mind?
In my experience some people use these kinds of setups to learn programming and some use them to learn embedded systems. The the programming aspect typically links together one or more assembled "break out" boards with a perihperal of interest and the programming learning is how to code something that combines that breakout boards library with some behavioral code to achieve some goal. Leaning embedded systems often involves actually building one's own "break out" board and writing the libraries that provide a programming API that can drive that board.
EDIT: As it turns out, the third method that these things are used is with a variant of Python which is nominally "Micropython" (official project), "CircuitPython", the Adafruit variant, or "Ardupy", the Seeed Studio variant.
That makes programming things even simpler. You don't even need any software on your computer (just a terminal program to talk to the board).
So getting this from CrowdSupply with the 'triple shield' and you're good to go.
So knowing what you want to learn, and what your level of investment is, helps give a better answer to the question.
AFAICT basically nobody is using python to program these things, just C. Building my own breakout board is crazy. But my friend did build an Arduino from scratch on a breadboard from AVR, etc. Don't see the point- that's all work that doesn't bring me closer to driving my 3D printer.
If you look at the Crowdsupply page, for $32 + shipping you can get the Pico and a set of 'shields'. The interesting one for you would be the "Grove" shield.
"Grove" is a connector / pinout standard that was created and supported by Seeed Studio (see: https://www.mouser.com/new/seeed-studio/seeed-studio-grove/ for a video on the infrastructure and ideas behind Grove (also see the Seeed wiki here: https://www.mouser.com/new/seeed-studio/seeed-studio-grove/)
There are a LOT of different boards you can get with sensors and what not on Grove and programming them in Micropython is supported because that is what Seeed uses (calling it Ardupy).
You will have to solder the pins on the Pico and the Grove shield, but after that you can just plug them together with cables.
Grove typically uses either a GPIO (on/off), and analog I/O, or an I^2C per board. You will need to know enough about those to match up the boards with the right connector on the shield. And then its just programming.
One of the things I've used when I've helped people learn about this stuff is to use the Grove temperature and humidty sensor and the NodeD1 (this is an early ESP8266 design that also runs micro python). A Python program that reads the sensor and then does an http GET on a web server with a CGI that records temperature and humidity. Control flow looks like this:
while true:
temp = read_temp()
humid = read_humid()
http.get("http://192.168.1.5/environment.cgi?t=" . temp . "?h=" . humid)
sleep(10)
The same web server has a page that uses D3 to plot temperature and humidity over time. Very simple and easy to do.(and yes you learn to read the temperature and humidity over i2c, and set the chip up to connect to the wifi hotspot)
[1] https://www.smart-prototyping.com/Qwiic.html
Disclaimer: I have never used these and don't know how good they are.
https://pycom.io/product/fipy/
Pycom also has various extension boards that plug right in with things like NFC/RFID, GPS, light/pressure/humidity sensors, etc.
Oh, and how could I forget to mention that it can run python directly on the microcontroller (micropython) so you don't need to know C to mess with it. And it does that thing where it mounts as a filesystem and you can just drag python files over to it and it'll automatically reboot into running them.
Highly recommend this little device.
As a MicroPython contributor I can't/won't use PyCom's fork because any code I develop for it cannot be accepted upstream.
I do like their hardware, it's a shame they chose to make their software licensing incompatible.
It wouldn't hurt to look for a completed project where someone has posted a tutorial on how they did it, and duplicate it. Then you can take small steps towards adapting it in a creative way, e.g., by writing new code for it, or adding more hardware goodies.
Like programming itself, you have to let hardware hacking grow on you. Maybe it will and maybe it won't. If it does, then it can be a fascinating rabbit hole to go down.
Funny reading this advice after all the Copilot drama.
Maybe life was a little bit simpler in some ways back then. Things that are now being hashed out regarding usage rights in the software world, were taken for granted in the early hobby and scientific communities.
My understanding of the Copilot issue is that it's hard to know the legality of using the code provided by the tool.
Here's what I'd recommend - pick up a cheap dev board! Shouldn't cost you more than $10 and a USB cable, and you can get to hacking straight away. It's easier than you think, I promise!
I’m only using a fraction of their power though.
I actually like the FeatherS2 for one reason, which is that it presents itself as a USB storage device and you can just drop Python files into it. Easier than the `ampy` stuff you have to do with the TinyPICO, and it comes with a "Stemma" port that you can wire up most Adafruit/Sparkfun sensors to. And it has mounting holes, which are a godsend if you want to make a proper 3D printed case for your project.
The only downside is FeatherS2 is CircuitPython and TinyPICO is MicroPython, and you don't get threading on CircuitPython.
Now that's really convenient. I'm creating a smartwatch with custom laser micro-projector, and would like to add such feature.
If anyone more knowledgeable would like to share their insights or favourite ressources on the matter I'd be really interested.
For low power you can obv turn off radio when youre not using it. Probably some simple way to sleep/shut it off completely as well.
You can communicate over the 802.15.4 radio which is very low power compared to WiFi.
I'd use RIOT-OS, Zephyr has official support from Nordic, but that's what I'm familiar with: You can create a 6loWPAN network where each node gets an IPv6 address, they can communicate to the IPv6 world through a border router which would be another nRF52 Dongle where the USB serves as an USB-Ethernet Uplink that you plug into your router.
You could then use CoAP to send the data to a server somewhere (or just plain UDP) and sleep most of the time.
https://en.wikipedia.org/wiki/Comparison_of_802.15.4_radio_m...
You can use SPI Radios though (if you don't want to design a board yourself). CC1101 isn't IEEE 802.15.4 but if you don't want to talk to third party modules that shouldn't matter.
AT86RF215 is a dual-band chip with pretty good range, but besides the official (expensive) eval board, there is no ready-to-buy board. You could manufacture them yourself though. [0]
Of course there is also LoRa which would likely be enough for your use case. It just has a much lower frame size.
I made a small MPPT solar harvester with a 0.47F supercap. This system reports soil moisture without using battery. It works even when weather is cloudy.
Hope this gives you some insight.
To receive, you can buy corresponding modules but I wouldn't bother with that. Get an RTL-SDR dongle for whatever computer you want to process the data on (an RPi is great for this if you don't want to keep your desktop on all the time to do it), and use the program rtl_433.
The 433 MHz transmitter module simply sends a 433ish MHz continuous signal when its data input pin is high and does not send when the input pin is low. You encode your message into a series of pulses of the transmitter.
For example, for a project I'm doing using one of these transmitter modules I've currently got it on an Arduino for testing. Here's the Arduino code to send a message.
#define CYCLE 1000
#define W_0 600
#define W_1 400
#define INTRO_1 1500
#define INTRO_0 1500
void send_message(char * bp, int n)
{
digitalWrite(RADIO, HIGH);
delayMicroseconds(INTRO_1);
digitalWrite(RADIO, LOW);
delayMicroseconds(INTRO_0);
while (n-- > 0) {
int b = *bp++ & 0xff;
int m = 0x80;
while (m != 0) {
int w = (b & m) ? W_1 : W_0;
digitalWrite(RADIO, HIGH);
delayMicroseconds(w);
digitalWrite(RADIO, LOW);
delayMicroseconds(CYCLE-w);
m >>= 1;
}
}
}
That sends a message starting with a 1.5 ms pulse and a 1.5 ms gap, and then n bytes of data where a 1 is a 400 usec pulse followed by a 600 usec gap, and a 0 is a 600 usec pulse followed by a 400 usec gap, so 1000 bits per second after the 3 ms prefix. (The actual timing is a little longer, because of overhead).My current test messages all start with "TZS", are 12 bytes long, and the last 2 bytes are a counter that simply increments every time I press a button. Adding this to an rtl_433 config file makes rtl_433 recognize those messages and print the count:
decoder {
name = TEST,
modulation = OOK_PWM,
short = 424,
long = 624,
reset = 1500,
sync = 1528,
bits = 96,
match = {24}0x849083,
get = count:@80:{16},
}
rtl_433 can then do a variety of things with the message, including saving to a file, sending to an MQTT server, sending to syslog, and sending to an Influx DB.This synth for example is entirely built around a Teensy.
Don't miss the demos!
It's possible the space saved by omitting an RF shield will foreclose any certification.
Okay for prototyping if you are don't mind polluting your local luminous ether, but check before planning commercial use.
https://github.com/cnlohr/espusb
It's an even smaller board that fits inside a USB port. It's good for making a Raspberry Pi pocket-sized. I use it as a WiFi keyboard for typing Chinese. It's much easier to use handwriting recognition on my phone for characters that I don't know.
https://www.youtube.com/watch?v=FPBzOaLbWhM
To get the EspUSB built, I had to download the KiCAD designs, generate Gerber files, guess the BOM, email back and forth with PCBWay, pay 70 EUR for 3 units, and have a stable address for them to ship to. And I still had to solder on serial wires, boot into Ubuntu, build and flash the firmware myself. The whole process took a couple of years. I'm starting that process (guessing the BOM) for the HDMI-PI now, but discovered that I also need to design an adaptor from MIPI-iPhone LCD connector so it will probably be another year or two before I finally get it built.
After the long process of having custom hardware built, I thought I'd write about it and maybe get some more built and sell them online. But I was scared away by FCC regulations: I could be sued for $100,000 or more if I sell a WiFi device that isn't certified, and it costs $10,000 to get the certification. So I gave up on trying to make it easier. Hardware is hard.
i'm going to buy one because I know how rough it is to compete as an individual in that sector, but admittedly I don't see much point in the design.
If a designer is in such dire-straits to get an ESP32 to fit somewhere and they're dead-set on a dev-ish off-the-shelf board, they'd probably chop the USB interface -- especially on a WiFi/BT-capable board -- much like the designers did on the 'LILYGO T-Micro32'; it makes development a tiny bit more cumbersome, but the wireless interfaces make it doable even without a custom pogo-pin style interface or equivalent.
You can't do anything with it unless you put it on a carrier PCB and add all of the other stuff yourself.
Seems to be a lot of confusion about what the Micro32 is and what it's not.
This is a dev board with USB taken off: https://www.tinypico.com/tinypico-nano
Should be great for low power applications, right? NOPE! First off, their official docs were totally wrong about what battery connector the board had. Then it turns out that the board has horrible power consumption during sleep, which is only partially mitigated by melting off the always-on power LED.
Adding insult to injury, the voltage regulator on the board is actually one that was intended for portable battery packs. When current draw goes below a certain level for 5 minutes, the voltage regulator just turns off. Any attempt to deep sleep for more than 5 minutes causes the board to commit suicide.
Has anyone on HN have experience with the SensoDuino?
https://www.instructables.com/SensoDuino-Turn-Your-Android-P...
https://www.crowdsupply.com/unexpected-maker/tinypico
Either I overlooked it or he doesn't have it on that page.
It's worth click through to -- depending on where you live another vendor might be considerably cheaper for you.
I'm in the US and Adafruit worked out to be ~$10 cheaper than CrowdSupply for me with shipping and tax.
There needs to be an ecosystem of "hats" such as OLED screens and environment sensors and buttons, so that it's easier to build simple projects.
https://www.amazon.com/dp/B07RLLY5WZ
https://www.aliexpress.com/item/32869180373.html
is smaller - just 19x13mm! Though it doesn't include USB connector, power supply, USB-serial IC, etc.
It's used in the Open Smartwatch project (https://open-smartwatch.github.io/).
In the low power world where I live (NB-IoT on battery for 10 years) 20uA is way too much. Standard is 5uA.
I wonder if we're going to see more and more edge computing in IOT sensor networks.
Same board without those two components would have been much more versatile and even smaller.
In the very same way as the infamous xkcd https://xkcd.com/927/