Wemos D1 является мини-платой ESP8266, она интересна благодаря своим размерам, низкой цене ($ 4), микро-USB, мощностью щитов, а также документацией, которая выглядит довольно хорошо. Плата может быть запрограммирована с помощью Arduino или Lua, и поддерживает как последовательное так и OTA программирование. Я решил попробовать и купил плату вместе с двумя экранами температуры, реле щита, а также микро SD щитом.

Я получил всё за $ 14.00 в магазине Wemos на Aliexpress , доставка заняла около одного месяца. Я также увидел, что они недавно выпустили новый OLED-экран по цене около $ 5. Все щиты были погружены в свои собственные антистатические пакеты.

с одной стороны плата имеет последовательный порт CH340 на чипе USB, а также кнопку сброса.

Предоставленные разъемы позволяют легко устанавливать на плату несколько экранов. Например, я подключил Wemos D1 mini на обоих реле экран и DHT Pro экран после того как припаял их к некоторым из разъемов. Единственная потенциальная проблема в том что можно припаять их неправильной стороной, так что вы просто должны убедиться, что контакты (5V, RST, …) правильно выровнены.

Я в основном следовал руководству по работе с Arduino с сайта Wemos.cc, те же кто предпочитает программировать на Lua / NodeMCU изучите руководство по NodeMCU. Существуют различные способы, настройки Arduino IDE для WeMos D1 мини, но я использовал только рекомендуемый способ: через Git.
Первым шагом были установка и запуск Arduino 1.6.8. Так как я использую компьютер под управлением Ubuntu 14.04, я скачал и установил Arduino 1.6.8 для Linux:
tar xvf arduino-1.6.8-linux64.tar.xz cd arduino-1.6.8 ./arduino
Теперь получим папку SketchBook, перейдя в File->Preferences

Обратите внимание на эту папку,так как в неё мы будем устанавливать файлы для поддержки платы , инструменты и примеры, выйдем из Arduino перед началом установки:
cd mkdir -p hardware cd hardware mkdir esp8266com cd esp8266com git clone https://github.com/esp8266/Arduino.git esp8266
скачиваем бинарные инструменты:
cd esp8266/tools python get.py
и, наконец, установим примеры:
cd git clone https://github.com/wemos/D1_mini_Examples.git
Позже вы можете обновить файлы поддержки материнской платы и образцы, запустив Git в двух каталогах, где вы запускали Git. теперь подключайте Wemos D1 мини к USB-порту компьютера с микро USB к кабелю USB. В Linux, вы должны увидеть новое устройство в логах ядра:
[ 8643.196931] usb 7-3: new full-speed USB device number 4 using ohci-pci [ 8643.361709] usb 7-3: New USB device found, idVendor=1a86, idProduct=7523 [ 8643.361717] usb 7-3: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 8643.361722] usb 7-3: Product: USB2.0-Serial [ 8643.363826] ch341 7-3:1.0: ch341-uart converter detected [ 8643.387870] usb 7-3: ch341-uart converter now attached to ttyUSB0
Давайте запустим Arduino 1.6.8 и выберем WeMos D1 R2 & mini в Tools->Board.

Мы можем использовать параметры по умолчанию, которые включают в себя частоту процессора в 80 МГц, 4М памяти, скорость загрузки 912600 в / DEV / port ttyUSB0.
Теперь мы можем использовать образцы кода, что бы убедиться, что все работает я запущу проект blink: File->Sketchbooks->D1_mini_Examples->01. Basics->Blink:
/*
* Blink
* Turns on the onboard LED on for one second, then off for one second, repeatedly.
* This uses delay() to pause between LED toggles.
*/
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // initialize onboard LED as output
}
void loop() {
digitalWrite(BUILTIN_LED, HIGH); // turn on LED with voltage HIGH
delay(1000); // wait one second
digitalWrite(BUILTIN_LED, LOW); // turn off LED with voltage LOW
delay(1000); // wait one second
}
При нажатии кнопки Upload будет скомпилирован и загружен код на плату и, как только это будет завершено, встроенный синий светодиод (D4 / GPIO2) будет мигать каждую секунду. Так что моя плата работает.

Как вы можете видеть, что я уже подключили DHT Pro экран к доске, так что давайте попробуем пример для экрана, чтобы получить температуру и влажность нужно пойти в File->Sketchbooks->D1_mini_Examples->04. Shield->DHT_Pro_Shield->Simple:
/* DHT Pro Shield - Simple
*
* Example testing sketch for various DHT humidity/temperature sensors
* Written by ladyada, public domain
*
* Depends on Adafruit DHT Arduino library
* https://github.com/adafruit/DHT-sensor-library
*/
#include "DHT.h"
#define DHTPIN D4 // what pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
Но на этот раз у меня была ошибка во время компиляции, а библиотека DHT отсутствовала:
D1_mini_Examples/04.Shields/DHT_Pro_Shield/Simple/Simple.ino:10:17: fatal error: DHT.h: No such file or directory
#include "DHT.h"
^
compilation terminated.
exit status 1
Error compiling for board WeMos D1 R2 & mini.
Чтобы исправить эту ошибку, перейдите к Sketch->Include Library->Manage Libraries, войдите в DHT, и установите DHT библиотеку с помощью Adafruit.
Теперь нажмите на кнопку Загрузить еще раз, код будет скомпилирован и загружен на борту. Теперь откройте монитор последовательного порта с Ctrl + Shift M или Tools->Serial Monitor, и вы должны увидеть значения влажности в процентах, а также индекса температуры и тепла в градусах Цельсия или Фаренгейта.
Температура соответствовала температуре с моего ИК-термометра (32,5 C). Если вы хотите, чтобы полученные результаты отображаются на веб-странице вместо этого, вы можете изменить пример DHT Shield->SimpleServer.
Теперь я попробую релейный экран и запустить другой образец (File->Sketchbooks->D1_mini_Examples->04. Shield->Relay_Shield->Blink):

/*
* Relay Shield - Blink
* Turns on the relay for two seconds, then off for two seconds, repeatedly.
*
* Relay Shield transistor closes relay when D1 is HIGH
*/
const int relayPin = D1;
const long interval = 2000; // pause for two seconds
void setup() {
pinMode(relayPin, OUTPUT);
}
void loop() {
digitalWrite(relayPin, HIGH); // turn on relay with voltage HIGH
delay(interval); // pause
digitalWrite(relayPin, LOW); // turn off relay with voltage LOW
delay(interval); // pause
}
Пример с миганием будет включать и выключать реле через каждые две секунды. Поскольку Pro экран DHT использует разъем D4 а так же использует разъем D1 оба могут быть использованы одновременно. У меня не было никаких проблем с загрузкой образца на плату, реле включается и выключается каждые 2 секунды.
Так что в целом, я очень доволен WeMos D1 mini и щитами он отлично работает из коробки, и у меня есть ультра-компактный WiFi подключенный к системе с реле 5А / 250В, и довольно точный (+/- 0.5C) датчик температуры и влажности всего $ 10.
Благодарим сайт cnx-software.com за предоставленную информацию
Оригинал статьи тут
