Friday, November 29, 2019

Identify ESP32 Modules

Espressif designs and manufactures different modules and development boards, such as ESP32-WROOM-32, ESP32-SOLO-1, ...etc. So what it means?

You can identify the key characteristics by the modules name in the page

Tuesday, October 29, 2019

Thursday, October 24, 2019

Arduino Pro IDE (alpha preview) released

Arduino announced a completely new development environment for Arduino, Arduino Pro IDE (alpha preview) released. Available in Windows, Mac OS X and Linux64 versions.

The main features in this initial alpha release of the new Arduino Pro IDE are:

  • Modern, fully featured development environment 
  • Dual Mode, Classic Mode (identical to the Classic Arduino IDE) and Pro Mode (File System view)
  • New Board Manager 
  • New Library Manager
  • Board List
  • Basic Auto Completion (Arm targets only)
  • Git Integration
  • Serial Monitor
  • Dark Mode

Source and download link:
~ Arduino Blog - Arduino Pro IDE (alpha preview) with advanced features

Thursday, June 6, 2019

Rapid IoT System Design with Arduino

Arduino provides an end-to-end approach to IoT that includes hardware, software, connectivity and cloud that enables users to focus on building their applications instead of spending time on the ‘how’.

Watch a recap of this webinar in association with Arduino to find out about rapid IoT system design.

This episode in the series is led by Dominic Pajak, VP Business Development, Arduino.

Monday, April 15, 2019

Install both ESP32 and ESP8266 on Arduino IDE, run on Ubuntu.

Before install ESP32/8266 on Arduino IDE running on Ubuntu, python is needed to be installed. Otherwise, you will be reported with error of:
exec: "python": executable file not found in $PATH

To install python and wget on Ubuntu, run the command in terminal:
$ sudo apt install python
$ sudo apt install python-pip
$ pip install wget

The simplest way to install ESP32/8266 on Arduino IDE is using Boards Manager,

To add boards manager, click in the menu
> File > Preferences >

Enter (for ESP32) or/and (for ESP8266) in Additional Boards Manager URLs. When add multiple URLs, separating them with commas.

This video show how:

If you run with error of:
ImportError: No module named

Most likely the pyserial is too old, re-install it with:
$ pip install pyserial

If you are looking for Ubuntu 20.04, read it Install ESP32/ESP8266 to Arduino IDE on Ubuntu 20.04, with setup Pythton & serial.

Wednesday, April 10, 2019

Install Arduino IDE 1.8.9 on Ubuntu 18.10 and set permission for serial port

This video show how to install the latest Arduino IDE 1.8.9 on a fresh new Ubuntu 18.10 (on VirtualBox 6.0/Windows 10).

This installation is very straightforward:
- visit Arduino Software download page to download the Linux 32 bits or 64 bits version corresponding to your system.
- Extract the downloaded file to the where you want to install.
- Open Terminal to run the with sudo.
$ sudo ./

After finished, you can start Arduino IDE with arduino command or from Application launcher.

But...up to this step, you have no permission to access the serial port. When you download the code to Arduino devices, you will be reported with error:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

To fix it, you have to add permission:
- Open Terminal, enter the command:
$ sudo usermod -a -G dialout <username>
$ sudo chmod a+rw /dev/ttyACM0

Saturday, April 6, 2019

ESP32 + OLED Module

It's a ESP32 module with integrated OLED.

It pre-load with a demo program. In first power-up, the OLED show a all ON screen and a welcome message alternatively.

Make the OLED work:

First of all, I install both ESP32 and ESP8266 on Arduino IDE.

The first thing I want to do is make the OLED work. But it's only limit info from the seller, only mention that it's WEMOS LoLin32, without any about the OLED. So I have to search, guess and try.

After searched in some Chinese website, I guess that the OLED driver for this module should be SSD1306, with I2C interface. and the I2C pin should be 5 and 4 for ESP32.

Then I have to identify the I2C address. I found a i2c_scanner example from Arduino Playground. Have to modify the code Wire.begin() to Wire.begin(5,4) for ESP32.

The full code is here:
// Copy from Arduino Playground - i2c_scanner
// --------------------------------------
// i2c_scanner
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.

#include <Wire.h>

void setup()
  Wire.begin(5,4);  //Modifed for ESP32

  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");

void loop()
  byte error, address;
  int nDevices;


  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    error = Wire.endTransmission();

    if (error == 0)
      Serial.print("I2C device found at address 0x");
      if (address<16) 
      Serial.println("  !");

    else if (error==4) 
      Serial.print("Unknown error at address 0x");
      if (address<16) 
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");

  delay(5000);           // wait 5 seconds for next scan

Remember to select board of "WEMOS LoLin32" before download.

The I2C address is 0x3C.

Then I tried to find any library suitable in Arduino IDE, and found "ESP8266 and ESP32 Oled Driver for SSD1306 by Daniel Eichhorn, Fabrice Weinberg".

Luckily it work as expect.

Tried to load the example of SSD1306SimpleDemo, simple modify the code
SSD1306Wire  display(0x3c, D3, D5);

SSD1306Wire  display(0x3c, 5, 4);

to make it work for this module.

This video show how to:

A minimum exercise to display simple text.

 * A ESP32/OLED exercise to display simple text
 * Board:
 * esp32 by Espressif Systems version 1.0.4
 * OLED library:
 * ESP8266 and ESP32 Oled Driver for SSD1306 displays version 4.1.0

#include <Wire.h>               // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306Wire.h"        // legacy: #include "SSD1306.h"
#include "images.h"

// Initialize the OLED display using Arduino Wire:
SSD1306Wire  display(0x3c, 5, 4);

void setup() {

  // Initialising the UI will init the display too.



void loop() {

  display.drawString(0, 0, "ESP32/OLED");
  display.drawString(0, 15, "exercise:");
  display.drawString(0, 30, "To display");
  display.drawString(0, 45, "simple text");



Friday, March 15, 2019

Arduino IDE 1.8.9 released

Arduino IDE 1.8.9 released, visit HERE to download.

It's noted in the Software Release Notes, Arduino 1.8.9 added new target of ARM64 boards (Nvidia Jetson and RaspberryPi3 with 64bit operating system).

- Install Arduino IDE 1.8.9 on Ubuntu 18.10 and set permission for serial port

Friday, February 8, 2019

Zerynth, middleware for IoT, you can program 32-bit microcontrollers using C/Python

With Zerynth you can program in Python or hybrid C/Python language the most popular 32-bit microcontrollers including ESP32, and connect them to the top Cloud infrastructures.

Read more:

Python on ESP32 DevKitC using Zerynth Studio - Hello World

Wednesday, February 6, 2019

Arduino IoT Cloud Public Beta announced

Going from an idea to a fully-functional IoT device has been a tedious process even for the most advanced engineers and developers… until now. Arduino now offers a complete platform with the MKR family providing a streamlined way to create local IoT nodes and edge devices using a range of connectivity options and compatibility with third-party hardware, gateway, and cloud systems. Whilst the Arduino IoT Cloud lets users manage, configure, and connect not only Arduino hardware but the vast majority of Linux-based devices — truly democratizing IoT development.

— Massimo Banzi, Arduino CTO and Co-Founder

Read more in Arduino Blog - Announcing the Arduino IoT Cloud Public Beta, posted by ARDUINO TEAM - February 6th, 2019

The Arduino IoT Cloud is an easy-to-use platform that makes it very simple for anyone to develop and manage their IoT applications, then deploy them to a large number of users. It allows users to create applications that solve real-life problems, and hopefully, improve their lives.

Convenience and flexibility are key considerations for the Arduino IoT Cloud. Arduino boards usually require you to program them by entering code by way of a sketch — now the Arduino IoT Cloud can do this for you. It will quickly and automatically generate a sketch when setting up a new thing, thus enabling a developer to go from unboxing their board to a working device within five minutes. The Arduino IoT Cloud also provides other methods of interaction, including HTTP REST API, MQTT, Command-Line Tools, Javascript, and Websockets.

IoT in 3 Minutes!

Sunday, January 27, 2019

Arduino officially certify Arduino users - Arduino Certification Program (ACP)

The Arduino Certification Program (ACP) is an Arduino initiative to officially certify Arduino users at different levels and evaluate their expertise in key Arduino knowledge areas. Certifications are offered at three tiers — enthusiasts, educators and professionals.

To know more: Arduino blog - Master your Arduino skills and get certified!

Friday, January 25, 2019

Arduino Science Kit Physics Lab, developed by Arduino + Google

The Arduino Science Kit Physics Lab is developed in collaboration with Google, is the first official Arduino kit designed for middle school curriculum. It is fully compatible with Google Science Journal available on Android.

Know more: Arduino and Google launch new Arduino Education Science Kit!

Saturday, January 19, 2019

NodeMCU-32S (ESP32-S)

Just bought a NodeMCU-32S board. NodeMCU-32S is the core development board based on ESP-32S module.

Pin definition (from

Related link:
ai-thinker NodeMCU-32S page

Exercise using NodeMCU-32S (ESP32-S):

Monday, January 14, 2019