Ядро набора –  плата NodeMCU, которая основана на WiFi  модуле ESP8266, представляющем собой полноценный 32-битный микроконтроллер, который на данный момент составляет серъезную конкуренцию плате Arduino.
 К данному набору прилагается онлайн-учебник на английском языке (
http://osoyoo.com/2016/11/28/3596/) – набор примеров для всех датчиков с подробными комментариями.
 Для подключения к  Интернету вещей  в примерах  используется очень популярный и простой IoT протокол – MQTT.  MQTT (Message Queue Telemetry Transport) – лёгкий сетевой протокол работающий поверх TCP/IP. Используется для обмена сообщения между устройствами по принципу издатель-подписчик (publish–subscribe).
 Программирование примеров рассмотрено в среде Arduino IDE для ESP8266. Если у вас есть некоторый опыт в кодировании Arduino, вы cможете начать программировать NodeMCU в кратчайшие сроки.
 Изучив примеры вы сможете быстро перейти к созданию собственных проектов в области Интернета вещей.
 Рассмотрим установку Arduino IDE для ESP8266. 
 Сначала необходимо скачать Arduino IDE с 
официального сайта версии не ниже 1.6.5. Запускаем Arduino IDE. Выбираем пункт 
Файл à Настройки и в поле 
Additional Boards Manager URLs вводим 
http://arduino.esp8266.com/stable/package_esp8266com_index.json. Нажимаем 
OK.  
   Выбираем пункт 
Инструменты à Плата à BoardsManager и в списке ищем плату ESP8266. Выбираем этот пункт, версию и нажимаем на 
Install.   
   
   
   После загрузки программного обеспечения в списке плат (
Инструменты à Плата à) появятся платы ESP8266.   
   Рассмотрим пример подключения датчика влажности и температуры DHT11 к плате NodeMCU ESP8266 и отправку данных по протоколу MQTT в интернет на сервер 
http://www.mqtt-dashboard.com/.
 Нам потребуются следующие компоненты из набора:
 
  Создаем новый скетч следующего содержания:  
 #include 
 #include 
 #include
 dht DHT;  
 // подключение датчика DHT11 к pin 3
 #define DHT11_PIN D3  
 // Установить свои настройки сети
 const char* ssid = "your_hotspot_ssid";
 const char* password = "your_hotspot_password";
 const char* mqtt_server = "broker.mqtt-dashboard.com";
 //const char* mqtt_server = "iot.eclipse.org";  
 WiFiClient espClient;
 PubSubClient client(espClient);
 long lastMsg = 0;
 char msg[50];
 int value = 0;  
 void setup_wifi() {
    delay(100);
   // Подключиться к WiFi сети
     Serial.print("Connecting to ");
     Serial.println(ssid);
     WiFi.begin(ssid, password);
     while (WiFi.status() != WL_CONNECTED)
     {
       delay(500);
       Serial.print(".");
     }
   randomSeed(micros());
   Serial.println("");
   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP());
 }  
 void callback(char* topic, byte* payload, unsigned int length)
 {
   Serial.print("Command is : [");
   Serial.print(topic);
   int p =(char)payload[0]-'0';
   int chk = DHT.read11(DHT11_PIN);
   // if MQTT comes a 0 message, показать humidity
   if(p==0)
   {
     Serial.println("to show humidity!]");
     Serial.print(" Humidity is: " );
     Serial.print(DHT.humidity, 1);
     Serial.println('%');
   }
   // if MQTT comes a 1 message, показать temperature
   if(p==1)
   {
   // digitalWrite(BUILTIN_LED, HIGH);
     Serial.println(" is to show temperature!] ");
   int chk = DHT.read11(DHT11_PIN);
    Serial.print(" Temp is: " );
    Serial.print(DHT.temperature, 1);
    Serial.println(' C');
   }
   Serial.println();
 } //end callback  
 void reconnect() {
  while (!client.connected())
   {
     Serial.print("Attempting MQTT connection...");
     // Создать  client ID - random
     String clientId = "ESP8266Client-";
     clientId += String(random(0xffff), HEX);
     // Произвести соединение
     //если MQTT broker имееет clientID,username and password
     // используйте
     // (client.connect(clientId,userName,passWord))
     if (client.connect(clientId.c_str()))
     {
       Serial.println("connected");
      //подключение к MQTT broker
       client.subscribe("OsoyooCommand");
     } else {
       Serial.print("failed, rc=");
       Serial.print(client.state());
       Serial.println(" try again in 5 seconds");
       // Пауза 6 секунд
       delay(6000);
     }
   }
 }  
 void setup() {
   Serial.begin(115200);
   setup_wifi();
   client.setServer(mqtt_server, 1883);
   client.setCallback(callback);
   int chk = DHT.read11(DHT11_PIN);
   Serial.print(" Starting Humidity: " );
   Serial.print(DHT.humidity, 1);
   Serial.println('%');
   Serial.print(" Starting Temparature ");
   Serial.print(DHT.temperature, 1);
   Serial.println('C');
 }  
 void loop() {
   if (!client.connected()) {
     reconnect();
   }
   client.loop();
   long now = millis();
   // чтение данных с DHT11 каждые 6 секунд
   if (now - lastMsg > 6000) {
      lastMsg = now;
      int chk = DHT.read11(DHT11_PIN);
      String msg="real time temperature: ";
      msg= msg+ DHT.temperature;
      msg = msg+" C ;real time Humidity: " ;
      msg=msg+DHT.humidity ;
      msg=msg+"%";
      char message[58];
      msg.toCharArray(message,58);
      Serial.println(message);
      // отправить данные в MQTT broker
     client.publish("OsoyooData", message);
   }
 }    
 Вносим в скетч следующие изменения:
 SSID и пароль для точки подключения платы NodeMCU к вашей сети:
 const char* ssid = "your_hotspot_ssid";
 const char* password = "your_hotspot_password";
 Если Вы будете использовать другой MQTT сервер, поменяйте его название в следующей строке:
 const char* mqtt_server = "broker.mqtt-dashboard.com";  
 Загружаем скетч на нашу плату NodeMCU, открываем монитор последовательного порта и если соединения указаны правильно, видим отправку данных влажности и температуры датчика на сервер.   
   На странице 
http://osoyoo.com/2016/11/28/3596/ вы можете посмотреть другие примеры.    
 Рекомендуемые книги  
  
  