Getting Started with the Wemos D1 Shields

The Wemos D1 shields are tiny boards that contains the ESP8266 Wi-Fi chip. These little guys are great for compact projects. Not to mention, their shields make up a perfect combination of monitoring and control solutions.

A row of Wemos D1 shields

Here’s a list of available Wemos D1 mini shields with the corresponding library to be used in your project.

Wemos D1 Shields

The most popular of these shields is the DHT shield which allows for Temperature and Humidity sensor reading. Check out our article on how to configure this one. 

NodeMCU ESP8266

Getting Started with ESP8266 and Internet of Things (IoT)


The ESP8266 is a small WiFi module that has become very popular in the maker and developer community. The ESP8266 comes in different flavors and form factors for example; you may use the WiFi module just by itself and a Microcontroller or bundled together in a development kit such as the NodeMCU.

Here’s a list of most popular dev kits with the ESP8266 module on the market:

ESP8266 Boards

Adafruit HUZZAH ESP8266
Adafruit HUZZAH
SparkFun ESP8266 Thing
SparkFun Thing
WeMoS (D1 Mini & Pro)
WeMoS (D1 Mini & Pro)

These dev kits are available from different distributors across the world so it makes them widely available.


Now let’s talk about what you need to tinker with these little guys and actually do something fun! All of these boards can be used with the Arduino IDE so if you don’t have it go ahead and install the latest version.

Next, install the Arduino ESP8266 Library. Under Arduino IDE,  go to Preferences window and enter the following url under:

“Additional Board Manager URLs”:

Second, go to Tools > Board > Board Manager and search ESP8266 and install library.

After successfully installing the library the board menu should now include a list of all supported ESP8266 board family.

Now you are almost ready to code and program the ESP boards. However, there is one more important  step, drivers.

Each family of the ESP uses different USB to Serial interface drivers, without the right one for your operating system and board you won’t be able to flash these boards. Please see each family website for the right driver.

NodeMCU (Drivers)

SparkFun ESP8266 Thing (Drivers)

WeMos D1 (Drivers)

Now you are ready to get started coding.

Connecting Wemos with Cayenne using MQTT

Connecting Wemos with Cayenne using MQTT is quick and simple. The Wemos D1 is one of the smallest board using the WiFi ESP chip. These also come with a variety of shields such as the DHT11 for temperature and humidity readings. Stay tune for other articles on how to take this module to a finish product and commercializing  it.

Imagine the possibilities that these small MCUs can do when we connect it with an IoT Cloud such as Cayenne. In this tutorial, we are going to walk you through how to connect the Wemos D1, the DHT11 shield and Cayenne using MQTT. By doing so you will be able to send Temperature and Humidity data to Cayenne and visualize it. 

Cayenne makes it easy and secured to connect Wifi and LoRa devices. Make sure to create an account and follow the steps below to add your first device.

Sketch Code

The follow sketch code requires the follow libraries:

// - This example shows how to connect the Wemos D1 pro & DHT11 with Cayenne using MQTT 

#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
#include <WEMOS_DHT12.h>

DHT12 dht12;

// WiFi network info.
char ssid[] = "WIFI_SSID";
char wifiPassword[] = "WIFI_PASSWORD";

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "MQTT_USERNAME";
char password[] = "MQTT_PASSWORD";
char clientID[] = "MQTT_CLIENT_ID";

unsigned long lastMillis = 0;

void setup() {
	Cayenne.begin(username, password, clientID, ssid, wifiPassword);

void loop() {

	//Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval.
	if (millis() - lastMillis > 10000) {
		lastMillis = millis();

      Cayenne.celsiusWrite(1, dht12.cTemp);
      Cayenne.virtualWrite(2, dht12.fTemp, TYPE_TEMPERATURE, UNIT_FAHRENHEIT);
      Cayenne.virtualWrite(3, dht12.humidity, TYPE_RELATIVE_HUMIDITY, UNIT_PERCENT);

//Default function for processing actuator commands from the Cayenne Dashboard.
//You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
	CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s",, getValue.getId(), getValue.asString());
	//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message");

Getting Started with Cayenne

  1. After logging in to your account you will see the screen below for the first time. If you have an existing account with devices, go ahead and click on: “Add Device” 

2. Click on “Cayenne API – Bring your Own Thing” this will generate device MQTT credentials and indicate where to connect. 

3. Copy each corresponding credential in the corresponding Sketch setting such as: MQTT_USERNAME, MQTT_PASSWORD and CLIENT_ID

4. Once you compile and flash the board the application will redirect the dashboard your connected device. 

Cayenne widgets will automatically pop up for your device with temperature and humidity reading.