Wemos D1 является мини-платой ESP8266, она интересна благодаря своим размерам, низкой цене ($ 4), микро-USB, мощностью щитов, а также документацией, которая выглядит довольно хорошо. Плата может быть запрограммирована с помощью Arduino или Lua, и поддерживает как последовательное так и OTA программирование. Я решил попробовать и купил плату вместе с двумя экранами температуры, реле щита, а также микро SD щитом.
с одной стороны плата имеет последовательный порт 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:
1 2 3 |
tar xvf arduino-1.6.8-linux64.tar.xz cd arduino-1.6.8 ./arduino |
Теперь получим папку SketchBook, перейдя в File->Preferences
Обратите внимание на эту папку,так как в неё мы будем устанавливать файлы для поддержки платы , инструменты и примеры, выйдем из Arduino перед началом установки:
1 2 3 4 5 6 |
cd mkdir -p hardware cd hardware mkdir esp8266com cd esp8266com git clone https://github.com/esp8266/Arduino.git esp8266 |
скачиваем бинарные инструменты:
1 2 |
cd esp8266/tools python get.py |
и, наконец, установим примеры:
1 2 |
cd git clone https://github.com/wemos/D1_mini_Examples.git |
Позже вы можете обновить файлы поддержки материнской платы и образцы, запустив Git в двух каталогах, где вы запускали Git. теперь подключайте Wemos D1 мини к USB-порту компьютера с микро USB к кабелю USB. В Linux, вы должны увидеть новое устройство в логах ядра:
1 2 3 4 5 6 |
[ 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* * 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
/* 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 отсутствовала:
1 2 3 4 5 6 |
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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* * 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 за предоставленную информацию
Оригинал статьи тут