Archive

Posts Tagged ‘espressif’

ESP32-PICO-KIT v4 Board Based on ESP32-PICO-D4 SiP Now Available for $10

December 7th, 2017 2 comments

A little while ago, I received a bunch of ESP32 PICO Core development boards which were based on Espressif Systems ESP32-PICO-D4 system-in-package with ESP32, 4MB SPI Flash, and other components. The advantage of such chip is that is requires less external component, and allows for smaller designs. For example, the boards I received would leave two row of pin on each side of the board, while most other ESP32 boards will only expose one row on each side.

I used the board to play with Micropython ESP32 port, and later-on when I launched a giveaway of 8 of the boards, I found out the name had changed to ESP32-PICO Kit, with the documentation listing v3 with all pins connected to male headers, and v4 with 6-pin not connected to a male header as shown in the photo below. Both versions of the board also have a different pin layout. But you don’t need to care since AFAIK v3 was never up for sale.

ESP32-PICO-KIT v4 however has now just launched, and Electrodragon offers it for $10 plus shipping.

Board specifications:

  • SiP – ESP32-PICO-D4 802.11 b/g/n WiFi + Bluetooth LE system-in-package
  • 3D antenna
  • USB – 1x micro USB port for power and programming;  CP2102 USB-TTL Serial Bridge
  • Expansion – 2x 20-pin headers with I/O and power signals. 2x 17-pin male headers soldered
  • Misc – EN and Boot buttons, on board power indicator LED.
  • Power regulator – AMS1117 3.3V regulator
  • Auto reset circuit
  • Dimensions – 51 x 20 mm

This board can be used like any other ESP32 board with ESP32 IDF SDK, Arduino Core, Micropython, and so on, it’s just narrower than most.

Other ESP32-PICO-D4 based boards have been launched such ESP32-PICO motherboard sold for $16 on Tindie, or TTGO T7, recently discovered by Time4EE, that can be purchased for $8.50 plus shipping on Aliexpress. The latter is however quite wider than the official Espressif devkit (estimated dimensions: 50×30 mm), but does provide a battery connector

TTGO T7

Standard ESP32 boards can now be purchased for as low as $5, so boards based on the SiP are currently a little bit more expensive, but I’d expect the price difference to come down overtime.

Giveaway Week – ESP32 PICO Kit v3 Boards

November 1st, 2017 240 comments

I don’t have one, but eight boards to give away to four winners (2 each) with Espressif Systems ESP32 PICO Kit v3 board based on ESP32-PICO-D4 SIP, an all-in one package with ESP32, 4MB SPI flash, crystal oscillator, and passive components, which allows for smaller boards.

Click to Enlarge

The board is very similar to any other ESP32 boards, and software compatible, but it’s just quite thinner, and easier to work with on breadboards. Since I had already played with Arduino Core and Espruino (JavaScript) on other boards, I used one of the 10 boards provided by Espressif to play with Micropyhon on ESP32.

Each winner will get two ESP32 PICO Core board in order to make it worthwhile with regards to shipping costs.

To enter the draw simply leave a comment below. Other rules are as follows:

  • Only one entry per contest. I will filter out entries with the same IP and/or email address.
  • Contests are open for 48 hours starting at 10am (Bangkok time) every day. Comments will be closed after 48 hours.
  • Winners will be selected with random.org, and announced in the comments section of each giveaway.
  • I’ll contact the winners by email, and I’ll expect an answer within 24 hours, or I’ll pick another winner.
  • Shipping
    • $4 for registered airmail small packet for oversea shipping payable via Paypal within 48 hours once the contest (for a given product) is complete.
    • If Paypal is not available in your country, you can still play, and I’ll cover the cost of sending the parcel by Sea and Land (SAL) without registration if you win.
  • I’ll post all 10 prizes at the same time, around the 8th of November
  • I’ll make sure we have 10 different winners, so if you have already won a device during this giveaway week, I’ll draw another person.

Good luck!

The boards above are not for sale yet, but the similar ESP32-PICO motherboard is sold for $16 on Tindie. Alternatively, you could contact Espressif Systems, if you are interested in getting ESP32 PICO Core samples.

Getting Started with MicroPython on ESP32 – Hello World, GPIO, and WiFi

October 16th, 2017 13 comments

I’ve been playing with several ESP32 boards over the months, and tried several firmware images. I started with a tutorial for Arduino Core on ESP32, a few month later I tested ESP32 JavaScript programming with Espruino on ESPino32 board, and recently Espressif Systems sent me ESP32 PICO core development board powered by their ESP32-PICO-D4 SiP, and while I took some pretty photos, I had not used it so far.

So I decided to go with yet another firmware, and this time, I played with MicroPython on ESP32, and will report my experience with basic commands, controlling GPIOs, and WiFi in this getting started post.

Flashing Micropython Firmware to ESP32 Board

Source code is available on Github, as a fork of MicroPython repo as ESP32 support has not been upstreamed yet. We could built the firmware from source, but there’s also a pre-built binary which you can download on MicroPython website.

I’ll be using Ubuntu 16.04 for the instructions, which should be pretty similar for other Linux distributions, especially the ones based on Debian, and if you’re using Windows 10, you should be able to follow the same instructions after installing Windows Subsystem for Linux with Ubuntu on your computer.

Let’s open a terminal, to download the firmware (October 14):

If you have not done so already, install the latest version of esptool:

Now connect the board via a micro USB to USB cable to your computer. The log should like like:

In my case, the device is ttyUSB0, but it may vary depending on the board used. We can now erase the flash, and copy the firmware to the board:

If the last step is successfull,  the output should be similar to the one below:

As a side note, version 2.1 of esptool does not know about ESP32-PICO-D4, but it can still detect an ESP32 device, and the update went through normally.

Hello World Sample / Boot Log with MicroPython

We can test the firmware, by connecting to the board using minicom, screen, putty, or whatever software you feel most comfortable with. I went with minicom, setup a connection to /dev/ttyUSB0 device with 115200 bps baudrate. I immediately tested the print function, and made an hard reset to check out the boot log:

The reset command will first generate some errors message, before rebooting the board:

We can type help function to get some more help:

I also often refered to MicroPython 1.9.2 documentation to write this quick start guide.

LED Blink Sample with MicroPython

The easiest way to test GPIOs is to connect an LED, since the board does not have any user LED, only the power LED. So I connected an LED to pin 21 via a transistor to ensure enough current passes through it.

Controlling the LED in the command line interface is easy. Import the machine library, set the pin to output, and change the pin level as needed:

Success! But what about doing a proper blink sample? MicroPython developers’ official PyBoard would show as a USB mass storage drive in you computer, where can copy Python files like boot.py and main.py files, but in the case of ESP32 PICO core, it appears the only option is to use the serial console for programming, as we can’t simply copy files to the board from the host computer.

I  found a solution on Techtutorialsx – which also has plenty of articles about MicroPython on ESP32/ESP8266. We need ampy script that can be install from our Linux terminal:

However, the first time I tried it I got an error:

I installed files module, but the error remained. So instead I installed it for Python 3:

I then created blink.py on my computer to blink the LED every 500 ms:

Before uploading the file to the board, you can try to run it as follow:

If you have plenty of errors here, that’s probably because your code is incorrect. Since I’m not very familiar with Python, it happened to me a couple of times, until I got the code right, and the LED was blinking as expected.

Now that we’ve made sure the code works, we can now copy our sample to the board…

… reconnect to the serial console, and verify the file is there:

To run the program type the following:

The LED should blink again. You can interrupt the program with Ctrl+C, and if you want to soft reset the board, press Ctrl+D.

In order to automatically start the blink program at each boot, rename blink.py to main.py, delete blink.py, and copy main.py instead:

Power cycle the board, and the LED should start blinking almost immediately.

ESP32 WiFi with MicroPython (Station and AP modes)

We’ve got GPIOs working, but one of the most important feature of ESP32 is obvisouly WiFi. I’ll start by configuring the board in station mode. First import the network library, set the board to station mode, and scan access points:

The latter should return a list of access points with ssid, bssid, channel, RSSI, authmode, and hidden status as explained here.

I can then connect the board to one of the access points with:

The log above with IP address should give  a clue, but you can check connection status with the following function:

and use ifconfig to get the IP info:

Switching to AP mode is easy with the three commands below configuring the board with ESP32-PICO-CNX SSID:

At this stage I can see ESP32-PICO-CNX on my phone, but it’s an open connection. We can change that with authmode option that can take 5 values:

  • 0 – open
  • 1 – WEP
  • 2 – WPA-PSK
  • 3 – WPA2-PSK
  • 4 – WPA/WPA2-PSK

I’ll use WPA2-PSK and define the password with the config function.

Working as planned…

ESP32 Web Server with Micropython

Many ESP32 project will require a web interface for monitoring or configuration. Let’s first setup the board as an access point using the command we’ve used above:

Now create webserver.py file based on Python code found here that’s supposed to return the status of some GPIO pins in an HTML table:

Copy the file to the board:

Start the serial console again, import/run the python sample we’ve copied, and connect to the board (in my case http://192.168.4.1):

 

It works as expected, but we wrote the HTML code inside the Python file, and you need to handle socket programming by yourself. To further simply the task, some MicroPython web servers such as MicroWebSrv, and Picoweb are available.

MicroWebSrv (Not working yet for me)

I tried to install MicroWebSrv first, but never managed to make it work. I still reproduce the step I followed in case somebody finds out what I did wrong. I got the code, and copied files from the Linux terminal:

We can check the files are where they are supposed to be:

Go into the terminal (aka REPL console) to start a basic example, after setting up a connection:

I could connect to the server, but I would always get 404 error.

PicoWeb

So instead I switched to picoweb, adapting the instructions here and there. It’s very easy to install.  First make sure you have a working Internet connection in your board (i.e. set station mode), and install the web server with upip:

That’s the output if everything goes according to plans:

Now let’s go back to the host computer to create an html document, for example index.html:

as well as picowebtest.py sample file that will request the HTML page from the board, and return it to the client.

You’ll need to change “192.168.0.108” by the IP address of your board.

Let’s copy both files to the board…

… go back to the serial console, connect in station mode, and run the sample:

Type or copy/paste the URL in the last line into a web browser, and you should get the output below.

ESP32 Bluetooth with MicroPython

There’s no Bluetooth support in the official MicroPython documentation, because it’s work in progress, and for the most adventurous MrSulry released an alpha version  a few days ago. The Bluetooth API is also in flux, but the basic code to enable Bluetooth should look like:

I’ll update that section once Bluetooth makes it to the stable release, and/or when I’m sure the API is frozen.

Other ESP32 (Micro)Python Resources

I’ve just covered a few things that can be done with MicroPyhon on ESP32, and beside the official documentation, you can also check the various MicroPython ESP32 tutoral on techtutorialsx blog. Loboris also made another MicroPython ESP32 firmware that supports pSRAM as MicroPython may use a lot of RAM. If you’re interested in Python for ESP32, but Zerynth is another option for Python on ESP32 that works with an IDE/GUI available for Windows, Linux and MAC OS X. [Update: Yet other options are Pumbaa a port of MicroPython running on top of Simba, and Pycom version of MicroPython]

A First Look at ESP32 PICO Core Development Board Powered by ESP32-PICO-D4 SiP

August 30th, 2017 13 comments

Last week, I wrote about ESP32-PICO-D4 system-in-package (SiP) that contains ESP32 WiSoC, 4MP SPI flash, a crystal oscilloscator and some passive components in a single 7×7 mm package in order to allow smaller designs based on ESP32. The company noticed the post, and asked me whether I’d be interested in receiving “some development boards based on ESP32 PICO”, an offer hard to refuse :), and within a couple of days I received the package below.

So I  ended up with 10 identical development kits, the company probably thought it was no worth paying for DHL to only send one or two development boards… The boards may also be part of some contests… We’ll see 😉

So let’s take two, and have a closer look at “ESP32_PICO_Core_Board_V3″… It comes with two rows of 20 pins with access to all I/Os, and features three main chips: ESP32-PICO-D4 SiP, AMS1117 voltage regulator, and Silabs CP2102 USB to UART controller for programming and debugging.

Click to Enlarge

There’s also an antenna, a EN and BOOT buttons, and a micro USB port. The board measures 52x20mm. On actual product, the USB bridge part would be there, so you could have something around half size or even much smaller…

Click to Enlarge

… something like the ESP32-PICO-D4 module below whose picture I found on the web.

ESP32-PICO-D4 features are basically the same of ESP32 ones, just more compact, so how does ESP32 PICO Core board compares to other breadboard friendly board based on ESP32? To find out, I compare it to ESP32-T board with ESP32-Bit module, and ESPino32 board with ESP-WROOM-32 module, which I plan to review/play with in about 2 weeks.

ESPino32 vs ESP32 Pico Core vs ESP32-T – Click to Enlarge

ESP32 Pico Core is clearly smaller. Compared to ESP32-T it’s about the same length, but much thinner, and include 2 extra pins, while in terms on functionality it’s more comparable to ESPino32 both with 40-pins, two button, and micro USB port, but the size difference is even greater.

ESP32 Pico Core on Breadboard – Click to Enlarge

If you wonder, the board is breadboard compatible, and since it’s thinner leave two rows of pins free on each side, compared to just one for most boards.

The boards are not for sale right now, and there’s no info on their website about them. You’ll however find some more details in ESP32-PICO-D4 datasheet.

ESP32-PICO-D4 System-in-Package Combines ESP32, 4MB SPI Flash, a Crystal Oscillator, and Passive Components

August 22nd, 2017 2 comments

Espressif Systems has revealed another ESP32 variant, but this time it’s not an SoC, but a 7x7mm system-in-package (SIP) that comes ESP32 dual core processor, a 4MB  SPI flash, a crystal oscillator and various passive components, so that you don’t need to include those in your design, and create an ultra-compact PCB for wearables and other space-constrained applications.

ESP32-PICO-D4 Internal Schematics – Click to Enlarge

ESP32-PICO-D4 SiP specifications:

  • SoC – ESP32 with two Tensilica LX6 cores, 448 KB ROM, 520 KB SRAM (inc. 8KB RTC memory), 1kbit eFuse
  • On-module Flash – 4MB SPI flash
  • Connectivity
    • WiFi – 802.11 b/g/n/e/i (802.11n up to 150 Mbps)
    • Bluetooth – Bluetooth V4.2 BR/EDR and BLE specification; ; class-1, class-2 and class-3 transmitter; Audio: CVSD and SBC
  • SIP Interfaces
    • SD card, UART, SPI, SDIO, LED PWM, Motor PWM, I2S, I2C, IR
    • GPIO, capacitive touch sensor, ADC, DAC, LNA pre-amplifier
  • Sensors –  On-chip Hall sensor & temperature sensor
  • Clock – On-module 40 MHz crystal
  • Power supply – 2.3 ~ 3.6V
  • Operating current – Average: 80 mA
  • Temperature range –  -40°C ~ 85°C
  • Package dimensions –  7.0±0.1 mm x 7.0±0.1 mm x 0.94±0.1 mm

I understand ESP32 supports up to 16MB flash, so future ESP32-PICO-D16 SIP might be possible too. The second schematics in the datasheet shows what a basic board with ESP32-PICO SIP looks like.

ESP32-PICO-D4 Module Peripheral Schematics – Click to Enlarge

The company explains the SiP is particularly suited for any space-limited or battery-operated applications, such as wearable electronics, medical equipment, sensors and other IoT products. Beside the datasheet, there’s currently very little information about ESP32-PICO-D4 on the web, so we’ll have to wait to see what comes out of it.

[Update: Photo of module with ESP32-PICO-D4

]

Via ESP32net Tweet

Single Core ESP32-S0WD WiSoC Datasheet and Price

August 18th, 2017 4 comments

I’m subscribed to Espressif Systems’ notification system so that I received an email each time there’s a documentation update on their website, and this morning they posted ESP32-S0WD Datasheet, the single core version of ESP32 processor, which we reported in our post about ESP32 5×5 packages.

Beside the small 5x5mm 48-pin package, and single Xtensa 32-bit LX6 microprocessor, it looks to be the same as the frequently used ESP32-D0WDQ6 with a 6x6mm 48-pin package. The CPU & Memory part of the datasheet reads:

  • ESP32-S0WD: Xtensa single–core 32-bit LX6 microprocessor, up to 200 DMIPS
  • 448 KB ROM
  • 520 KB SRAM
  • 16 KB SRAM in RTC
  • QSPI flash/SRAM, up to 4 x 16 MB
  • Power supply: 2.3V to 3.6V

While ESP32 datasheet shows a dual core up to 600 MIPS, so maybe the max frequency is also limited. I could not find any ESP32-S0WD module or board just yet, but GridConnect is selling ESP32-S0WD chip for $2.35, ESP32-D0DW(Q6) for $2.75, and ESPD2DW (dual core with 2MB embedded flash) for $3.25.

Click to Enlarge

For comparison, the same site sells ESP8266 for $1.75, so it should mean we should soon get even cheaper ESP32 boards with WiFi and Bluetooth 4.2 LE, but just with less processing power. Note that price should be even lower if you buy in quantity from resellers in China. ESP32-S0WD would be especially suited as an upgrade for products that use both ESP8266 and an external Bluetooth chip, as it would offer a smaller and cheaper solution.

New Espressif ESP32 Single and Dual Core Processors in 5x5mm Package, Optional Embedded Flash Coming Soon

April 4th, 2017 9 comments

Espressif ESP32 was launched last year as a dual core Tensila processor with WiFi and Bluetooth connectivity, relying on external flash for storage, and packaged into a QFN48 6x6mm package. Espressif recently updated ESP32 datasheet, and the guys at ESP32net noticed three new versions of the processor with a QFN48 5x5mm package, one version including 2 MBytes embedded flash, and another version with a single core.

The three new versions of ESP32 all come with the same WiFi 802.11b/g/n ad Bluetooth 4.0 LE connectivity and a QFN 5×5:

  • ESP32-D0WD dual core processor without embedded flash
  • ESP32-D2WD dual core processor with 16 Mbit embedded flash
  • ESP32-S0WD single core processor without embedded flash

ESP32-D0WD different with ESP32-D0WDQ6 is only the smaller package, while ESP32-D2WD brings 2MB embedded flash too possibly lowering the price of current solution with external flash, and ESP32-S0WD might be closer to ESP8266 price thanks to its single core, while still offering Bluetooth Smart support on top of WiFi.

Other interesting – but so far unused – parts of the nomenclature are that future ESP32 version may support 802.11a (AFAIK no that commonly used), as well as 802.11ac for higher WiFi throughput, which would also mean a dual band (2.4 / 5GHz) ESP32 processor (ESP32-D0CD or ESP32-D2CD) might be manufactured in the future.

Thanks to Nanik for the tip.

Categories: Espressif Tags: 802.11ac, ble, esp32, espressif, IoT, wifi

Oh Look… Espressif ESP32 Die-shot! That’s Pretty!

February 6th, 2017 13 comments

Espressif ESP32 was launched last year as a faster and upgraded version of ESP8266, with a dual core processor, 802.11 b/g/n WiFi and Bluetooth 4.0 LE. Boards based on the processor are still priced much higher than the ones based on ESP8266 ( although we’re only talking about $20 here), and shops have trouble keeping stocks, so either there’s a huge demand, there’s some manufacturing bottleneck, or maybe Espressif wants to take it slow at the beginning in case some hard to find bugs are found in the Silicon. Nevertheless, the guys at Zeptobar got hold of some ESP32 modules, and took some pretty die-shots.

Click to Enlarge

The die size is 2960×2850 µm. The prettiest part is clearly the RF section zoomed in below.

Click to Enlarge

If you wonder how it compares to ESP8266 die-shot, Zeptobar has you covered.

Categories: Espressif, Hardware Tags: esp32, espressif