ESP в качестве WiFi шлюза к «умному дому» — rpilot62.ru

Голосовое и кнопочное управление через Интернет сервером на модуле ESP8266-01 с помощью Смартфона

Практика для студентов
Мясищев А.А.

       Программирование миниатюрного WiFi модуля на базе новейшей микросхемы ESP8266 возможно с использованием среды разработки Arduino IDE, если загрузить туда программу ESP8266. Это позволит писать программы (sketch) с помощью известных для контроллера Arduino функций и библиотек, и запускать их прямо на ESP8266, без внешней платы Arduino. Таким образом, с программой ESP8266 и ее библиотеками модуль ESP8266 становиться платой Arduino. Программа ESP8266 поставляется с библиотеками, которые позволяют через интерфейс WiFi с помощью протоколов IP, TCP, UDP обмениваться данными с WEB, SSDP, mDNS и DNS серверами, использовать flash память для создания файловой системы, обеспечить работу с SD картами, сервоприводами, работать с периферийными устройствами по шинам SPI и I2C. Как и плата Arduino, модуль ESP8266 имеет свои программируемые выводы GPIO. Их можно использовать для управления внешними устройствами, получения данных с различных датчиков.
Цель работы.
1.

На модуле ESP8266-01 построить Wifi web server для управления двумя устройствами и снятия данных с температурного датчика DS18B20.
2. Для Смартфона (планшета) написать программу для управления устройствами сервера в кнопочном режиме и в режиме голосовых команд.

Видео демонстация работы системы

Для решения этих задач выполним ряд подготовительных действий.
       Рассмотрим установку программы ESP8266. Начиная с версии 1.6.4 Arduino IDE, появилась возможность установки сторонних пакетов с помощью Boards Manager.
Последовательность установки следующая:
1. Загружаем последний Arduino IDE с сайта https://www.arduino.cc и устанавливаем его на компьютер.
2. Запускаем Arduino IDE, переходим в папку Файл -> Настройки

3. Вводим http://arduino.esp8266.com/stable/package_esp8266com_index.json в Additional Board Manager URLs field.

4.Переходим к меню Инструменты -> Плата -> Boards Manager …->

5.Находим esp8266 и нажимаем install

6. После установки переходим в меню Инструменты -> Плата -> Generic ESP8266 Module:

7.Компиляция программы, которую можно набрать во встроенном редакторе Arduino IDE:


Ниже представлена программа для модуля ESP8266-01, которая представляет собой WiFi web server, управляющий двумя светодиодами(LED W — белый, LED R — красный) и снимающий показания температуры с датчика DS18B20. Управление выполняется через браузер клиента. Допустимые команды:
http://192.168.1.111:8080/whion, /whioff, /redon, /redoff, /temp, /status

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <stdio.h>
const char* ssid = «OpenWrt»; //Подключается к точке доступа OpenWrt
char strok[30];
char buf[30];
long sec;
int ss;
IPAddress ip(192,168,1,111);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(8080);
OneWire ds(0); // Датчик температуры DS18B20 на GPIO — 0
const int led1 = 1; // GPIO — 1 LED R
const int led2 = 2; // GPIO — 2 LED W
void temper() {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
float celsius;
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
OneWire::crc8(addr, 7);
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(800); // maybe 750ms is enough, maybe not
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an «int16_t» type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let’s zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
celsius = (float)raw / 16.0;
dtostrf(celsius,5,2,buf);
sprintf(strok,»<h1>Temperatura = %s Celsius</h1>»,buf);
}
void tem(){
server.send(200, «text/html»,strok);
}
void whi_on() {
digitalWrite(led2, 1);
server.send(200, «text/html»,»<h1>whi on</h1>»);
}
void whi_off() {
digitalWrite(led2, 0);
server.send(200, «text/html»,»<h1>whi of</h1>»);
}
void red_on() {
digitalWrite(led1, 0);
server.send(200, «text/html»,»<h1>red on</h1>»);
}
void red_off() {
digitalWrite(led1, 1);
server.send(200, «text/html»,»<h1>red of</h1>»);
}
void whi_sta(){
if (digitalRead(led1)==0 && digitalRead(led2)==1) server.send(200, «text/html»,»<h1>Status: RedOn WhiOn</h1>»);
if (digitalRead(led1)==1 && digitalRead(led2)==1) server.send(200, «text/html»,»<h1>Status: RedOf WhiOn</h1>»);
if (digitalRead(led1)==0 && digitalRead(led2)==0) server.send(200, «text/html»,»<h1>Status: RedOn WhiOf</h1>»);
if (digitalRead(led1)==1 && digitalRead(led2)==0) server.send(200, «text/html»,»<h1>Status: RedOf WhiOf</h1>»);
}
void root(){
server.send(200, «text/html»,»<h1>This is web-server on Wifi-esp-01.<br>He controls two led and temperature.<br>Command:/whion /whioff /redon /redoff /temp /status</h1>»);
}
void setup(void){
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, 1);
digitalWrite(led2, 0);
WiFi.config(ip,gateway,subnet);
WiFi.begin(ssid);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
temper();
server.on(«/temp», tem);
server.on(«/whion», whi_on);
server.on(«/whioff», whi_off);
server.on(«/redon», red_on);
server.on(«/redoff», red_off);
server.on(«/status», whi_sta);
server.on(«/», root);
server.begin();
// Serial.println(«HTTP server started»);
}
void loop(void){
sec=millis()/1000;
ss=sec%60; // second
if(ss==0 || ss==30 ) {temper();
}
server.handleClient();
}
        Схема подключений устройств, кнопок управления и TTL выход UART на компьютер для прошивки представлена на рисунке 1.

Рис.1.

Схема подключения 

Вместо USB — TTL преобразователя для подключения к компьютеру для прошивки ESP8266-01 можно использовать плату Arduino UNO. На рисунке 2 показана схема подключения Arduino и модуля ESP8266-01.

Рис.2. Схема использования Arduino UNO в качестве USB — TTL преобразователя

Reset подключен к GND для предотвращения запуска микроконтроллера. Перед прошивкой необходимо нажать на кнопу Flash Button и удерживая ее нажать Reset Button. После этого отпустить обе кнопки. Таким образом эти две кнопки нужны только для программирования.
Управлять устройствами, подключенными к серверу на модуле ESP8266-01 возможно с помощью программы web — клиента, написанного для Андроид устройства на языке визуального программирования App Inventor 2. Она управляет 2-мя устройствами (светодиодами), снимает данные с температурного датчика в кнопочном режиме и голосовыми командами, определяет текущее состояния устройств (включено или выключено).
Программа состоит из двух частей: дизайна с компонентами и набора блоков, реализующих определенные действия. Перед ознакомлением с программой целесообразно посмотреть видео уроки, например, по ссылкам:
https://www.youtube.com/watch?v=RpbPcLt4uvA
https://www.youtube.com/watch?v=Fr4uPvt27l0

1. Дизайн с компонентами

 2. Блочная программа (1)

 3. Блочная программа (2)

4. Блочная программа (3)

5. Блочная программа (4)

Подробное описание работы каждого блока программы можно найти по ссылке: 
https://sites.google.com/site/webstm32/manag_esp8266

Программа на Смартфоне работает следующим образом:
1. Случай установки адреса сервера. Поддерживается два адреса, например, глобальный и локальный.
1.1. Нажимаем на поле TextBox1 и с клавиатуры вводим имя или адрес сервера. Например webstm32.sytes.net:8080
1.2. Нажимаем на кнопку save addr1 для запоминания имени. Вместо имени можно вводить IP адрес.
1.3. С помощью кнопки see addr1 можно вывести запомненный адрес. Нажав на кнопку save addr мы делаем этот адрес доступным Смартфону даже при его отключении.
2. Случай управления кнопками.
2.1. При нажатии на кнопки «Включить белый», «Включить красный» включаются белый и красный светодиоды. Состояние светодиодов отображается на экране в Label2 и Label7. При нажатии на кнопку «Температура» отображается температура в Label1.
2.2. Аналогично при нажатии на кнопки «Выключить белый», «Выключить красный».
2.3. При нажатии на кнопку «Состояние системы» в Label6 распечатывается состояние светодиодов.
3. Случай управления голосом.
3.1. При нажатии на кнопку «Нажми и говори» запускается синтезатор речи и Смартфоном произносится фраза «Произнесите команду». Появляется звуковой сигнал, включается микрофон и Смартфон ожидает произнесения фразы. После произнесения фразы появляется звуковой сигнал происходит распознавание фразы серверами google. После распознавания результат выводится в Label5.
3.2. При произнесении фраз «Включить белый», «Включить красный» включаются белый и красный светодиоды. Состояние светодиодов отображается на экране в Label2 и Label7. При произнесении фразы «Температура» отображается температура в Label1. После произнесения фраз синтезатор речи подтверждает исполнение команды.
3.3.

Аналогично при произнесении фраз «Выключить белый», «Выключить красный».
3.4. Если произносятся фразы, входящие в перечень известных Смартфону команд, автоматически запускается голосовой распознаватель для прослушивания следующей команды.

При произнесении фразы не входящей в набор команд, распознавание голоса завершается.

Выводы.
1. Относительно простое программирование модуля ESP8266-01 с помощью среды разработки Arduino IDE.
2. Простота программирования Смартфона в среде App Inventor 2.
3. Дешевизна модуля ESP8266-01 (Примерно в 2,5 раза дешевле Arduino UNO)
4. Стабильность работы для решения задач управления бытовыми устройствами через Интернет.
5. Недостатки. Ограниченное количество выводов для управления устройствами у модуля ESP8266-01(4 — вывода включая RXD, TXD). Как следствие — установка IP параметров, имени точки доступа и пароля входа в неё возможно лишь в программе с последующей ее компиляцией и перепрошивкой модуля.

Программирование миниатюрного WiFi модуля на базе новейшей микросхемы ESP8266 возможно с использованием среды разработки Arduino IDE, если загрузить туда программу ESP8266. Это позволит писать программы (sketch) с помощью известных для контроллера Arduino функций и библиотек, и запускать их прямо на ESP8266, без внешней платы Arduino. Таким образом, с программой ESP8266 и ее библиотеками модуль ESP8266 становиться платой Arduino. Программа ESP8266 поставляется с библиотеками, которые позволяют через интерфейс WiFi с помощью протоколов IP, TCP, UDP обмениваться данными с WEB, SSDP, mDNS и DNS серверами, использовать flash память для создания файловой системы, обеспечить работу с SD картами, сервоприводами, работать с периферийными устройствами по шинам SPI и I2C. Как и плата Arduino, модуль ESP8266 имеет свои программируемые выводы GPIO. Их можно использовать для управления внешними устройствами, получения данных с различных датчиков.

Рассмотрим установку программы ESP8266. Начиная с версии 1.6.4 Arduino IDE, появилась возможность установки сторонних пакетов с помощью Boards Manager.
Последовательность установки следующая:
1. Загружаем последний Arduino IDE с сайта https://www.arduino.cc и устанавливаем его на компьютер.
2. Запускаем Arduino IDE, переходим в папку Файл -> Настройки

3. Вводим http://arduino.esp8266.com/stable/package_esp8266com_index.json  в Additional Board Manager URLs field. 

4.Перейти к меню Инструменты -> Плата -> Boards Manager …->

5.Находим esp8266 и нажимаем install

6. После установки переходим в меню Инструменты Плата Generic ESP8266 Module:

7.Компиляция программы, которую можно набрать во встроенном редакторе Arduino IDE:

Ниже представлена программа для модуля ESP8266-01, которая представляет собой WiFi web server, управляющий двумя светодиодами(LED W — белый, LED R — красный) и снимающий показания температуры с датчика DS18B20. Управление выполняется через браузер клиента. Допустимые команды:
http://192.168.1.111:8080/whion, /whioff, /redon, /redoff, /temp, /status

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <stdio.h>
const char* ssid = «OpenWrt»; //Подключается к точке доступа OpenWrt
char strok[30];
char buf[30];
long sec;
int ss;
IPAddress ip(192,168,1,111);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(8080);
OneWire ds(0); // Датчик температуры DS18B20 на GPIO — 0
const int led1 = 1; // GPIO — 1 LED R
const int led2 = 2; // GPIO — 2 LED W
void temper() {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
float celsius;
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
OneWire::crc8(addr, 7);
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end
delay(800); // maybe 750ms is enough, maybe not
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an «int16_t» type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let’s zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
celsius = (float)raw / 16.0;
dtostrf(celsius,5,2,buf);
sprintf(strok,»<h1>Temperatura = %s Celsius</h1>»,buf);
}
void tem(){
server.send(200, «text/html»,strok);
}
void whi_on() {
digitalWrite(led2, 1);
server.send(200, «text/html»,»<h1>whi on</h1>»);
}
void whi_off() {
digitalWrite(led2, 0);
server.send(200, «text/html»,»<h1>whi of</h1>»);
}
void red_on() {
digitalWrite(led1, 0);
server.send(200, «text/html»,»<h1>red on</h1>»);
}
void red_off() {
digitalWrite(led1, 1);
server.send(200, «text/html»,»<h1>red of</h1>»);
}
void whi_sta(){
if (digitalRead(led1)==0 && digitalRead(led2)==1) server.send(200, «text/html»,»<h1>Status: RedOn WhiOn</h1>»);
if (digitalRead(led1)==1 && digitalRead(led2)==1) server.send(200, «text/html»,»<h1>Status: RedOf WhiOn</h1>»);
if (digitalRead(led1)==0 && digitalRead(led2)==0) server.send(200, «text/html»,»<h1>Status: RedOn WhiOf</h1>»);
if (digitalRead(led1)==1 && digitalRead(led2)==0) server.send(200, «text/html»,»<h1>Status: RedOf WhiOf</h1>»);
}
void root(){
server.send(200, «text/html»,»<h1>This is web-server on Wifi-esp-01.<br>He controls two led and temperature.<br>Command:/whion /whioff /redon /redoff /temp /status</h1>»);
}
void setup(void){
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, 1);
digitalWrite(led2, 0);
WiFi.config(ip,gateway,subnet);
WiFi.begin(ssid);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
temper();
server.on(«/temp», tem);
server.on(«/whion», whi_on);
server.on(«/whioff», whi_off);
server.on(«/redon», red_on);
server.on(«/redoff», red_off);
server.on(«/status», whi_sta);
server.on(«/», root);
server.begin();
// Serial.println(«HTTP server started»);
}
void loop(void){
sec=millis()/1000;
ss=sec%60; // second
if(ss==0 || ss==30 ) {temper();
}
server.handleClient();
}

Схема подключений устройств, кнопок управления и TTL выход UART на компьютер для прошивки представлена на рисунке 1.

Рис.1.

Схема подключения 

Вместо USB — TTL преобразователя для подключения к компьютеру для прошивки ESP8266-01 можно использовать плату Arduino UNO. На рисунке 2 показана схема подключения Arduino и модуля ESP8266-01.

Рис.2. Схема использования Arduino UNO в качестве USB — TTL преобразователя

Reset подключен к GND для предотвращения запуска микроконтроллера. Перед прошивкой необходимо нажать на кнопу Flash Button и удерживая ее нажать Reset Button. После этого отпустить обе кнопки. Таким образом эти две кнопки нужны только для программирования.
 

 




  • 22.06.15 08:39
  • #0
  • Гиктаймс

3D-принтеры

Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера.

Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:

1 Этап. Корректируем плоскость по трем точкам

Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.

Точки, по которым мы будем производить калибровку назовем аналогично (A, B, C) и позиция этих точек равна A= X-52 Y-30; B= X+52 Y-30; C= X0 Y60.

Алгоритм настройки:

  1. Подключаемся к принтеру. (В случае “крагозяб” в командной строке, необходимо сменить скорость COM порта. В нашем случае с 115200 на 250000 и переподключится)

    После чего мы увидим все настройки принтера.
  2. Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
    И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет.
  3. Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
  4. Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
  5. Теперь приступаем непосредственно к настройке наших трех точек.
    Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.
    Создание кнопок в Pronterface

    Для этого в центральной части окна имеется кнопка “+”, нажав на которую откроется окно с тремя полями: Button Title (Название кнопки), Command (команда), Color (Цвет будущей кнопки)
    Заполняем:
    Buttom Title: Min A; Command: G1 X-52 Y-30; Color: Orange
    Buttom Title: Min B; Command: G1 X+52 Y-30; Color: Blue
    Buttom Title: Min C; Command: G1 X0 Y60; Color: Green
    Buttom Title: Zero; Command: G1 X0 Y0; Color: White

  6. Последовательно перемещаясь между тремя точками (созданными ранее кнопками или командами) выясняем какая из них находится ниже всего (визуально) и принимает эту ось за нулевую, относительно нее мы будем менять высоту остальных двух точек.
  7. Предположим, что точка A у нас ниже остальных. Перемещаем головку в точку B(Y) и клавишами управления высотой в Pronterface опускаем сопло до касания с нашим щупом, считая величину, на которую мы опустили сопло (в лоб считаем количество нажатий на кнопки +1 и +0.1)
    Далее командой меняем параметры высоты оси Y: M666 Y {посчитанная величина}
    M666 Y0.75
    M500
    G28
  8. Ту же операцию проделываем с оставшимися осями. После чего следует опять проверить высоту всех точек, может получится, что разброс высот после первой калибровки уменьшится, но высота все равно будет отличатся, при этом самая низкая точка может изменится. В этом случае повторяем пункты 6-7.
2 Этап. Исправляем линзу

После того как мы выставили три точки в одну плоскость необходимо произвести коррекцию высоты центральной точки. Из за особенности механики дельты при перемещении печатающей головки между крайними точками в центре она может пройти либо ниже либо выше нашей плоскости, тем самым мы получаем не плоскость а линзу, либо вогнутую либо выпуклую.

Корректируется этот параметр т.н. дельта радиусом, который подбирается экспериментально.

Калибровка:

  1. Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
  2. Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
  3. Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
  4. Команды:
    G666 R67,7
    M500
    G28
  5. Подгоняем дельта радиус пока наша плоскость не выровняется
3 Этап. Находим истинную высоту от сопла до столика

Третьим этапом мы подгоняем высоту печати (от сопла до нижней плоскости — столика) Так как мы считали, что общая высота заведомо не правильная, необходимо ее откорректировать, после всех настроек высот осей. Можно пойти двумя путями решения данной проблемы:
1 Способ:
Подогнав вручную наше сопло под щуп, так что бы оно свободно под ним проходило, но при этом не было ощутимого люфта,

  • Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
  • Командой M666 L получаем полное значение высоты (Параметр H)
  • После чего вычитаем из полной высоты фактическую высоту.
  • Получившееся значение вычитаем из высоты щупа.

Таким образом мы получаем величину недохода сопла до нижней плоскости, которое необходимо прибавить к полному значению высоты и и записать в память принтера командами:
G666 H 235.2
M500
G28

2 Способ:
Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.

Калибровка Prizm Pro

Калибровка Prizm Pro осуществляется по тому же принципу, только координаты точек A, B, C будут соответствовать значениям: A=X-155.9 Y-90; B=X155.9 Y-90; C= X0 Y180

Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.

Вы можете помочь и перевести немного средств на развитие сайта



Исполнение (бета)

На данный момент контроллер выполнен на односторонней печатной плате. Питание можно подавать от любого источника +5V (разъем USB).

Поддерживаемые датчики и дисплеи

  • DHT11/DHT22 (влажность)
  • 1-Wire DS18B20 (температура)
  • I2C LM75 (температура)
  • I2C DS1621 (температура)
  • I2C BMP085/BMP180 (температура+давление)
  • I2C BH1750 (освещённость)
  • I2C INA219 (ток и напряжение для слаботочных цепей)
  • I2C AM2313 (температура+влажность), в процессе
  • I2C конвертор для дисплеев 1602, 1604, 2004

Поддерживаемые сервисы

Возможные варианты использования

  • Домашняя метеостанция – атмосферное давление, влажность, температура в доме и на улице
  • Управление насосом в отопительной системе (Heatpump monitor)
  • Управление системой получения и накопления солнечной энергии (Solar Monitoring)
  • Контроль расхода электроэнергии (Electricity monitor)

Стартовая страница модуля

Разработка нового дизайна страниц модуля (прототип)

Благодарности

  • Автору уникальной прошивки для ESP8266
  • Автору первоклассного сервиса Народный Мониторинг
  • eeyura – за помощь в разработке первых макетов и схем печатной платы для ESP8266
  • sergg – за помощь в изготовлении печатных плат ESP8266 для проекта Homes-Smart
  • neorender – за помощь в отрисовке наглядных и красивых схем для начинающих

Правила хорошего тона

При включении отправки данных на сервис ThingSpeak, пожалуйста установите теги “homes-smart” и “esp8266” в своем канале. Это очень поможет разработчикам ПО. После активации тегов, вы можете проверить наличие своего устройства в группе Homes-Smart

Виды прошивок

FlyMon DMS – система мониторинга

Отправка данных на Народный Мониторинг

Для активации режима отправки данных, достаточно установить соответствующую галочку во вкладке Servers.

С 07.01.2015 набор-конструктор “Homes-Smart 01” официально представлен в разделе hardware на сайте narodmon.ru

Отправка данных на ThingSpeak

К сожалению, на сервис ThingSpeak можно отправить всего 8 параметров, привязанных к датчикам.

  • field1 => DHT1 / AM2321 temp
  • field2 => DHT1 / AM2321 humidity
  • field3 => BMP temp
  • field4 => BMP pressure
  • field5 => DHT2 temp
  • field6 => DHT2 humidity
  • field7 => DS18B20 / LM75 temp
  • field8 => BH1750 light

Подключение датчиков к модулю ESP-01

Расширенный вариант, схема кликабельна.

Плата для базовых экспериментов – Homes-Smart-01

На первом варианте платы (размер 30×75 мм) размещены :

  • Модуль ESP-01 (основной)
  • Модуль BMP180 (датчик температуры и давления)
  • Модуль BH17150 (датчик освещенности)
  • Преобразователь DC/DC 5V/3,3V LD1117
  • Датчик температуры LM75 или DS1621
  • Клеммы для подключения внешнего датчика DS18B20
  • Кнопка перевода модуля ESP в режим прошивки
  • Гребёнка для подключения датчиков, дисплеев, устройств и ПК для прошивки

Добавлено описание и номиналы деталей, перемычки выделены синим цветом.

Рисунок печатной платы ver.0.1.1 в формате Sprint Layout доступен по данной ссылке .

Добавлен второй вариант печатной платы.

Рисунок печатной платы ver.0.1.2 в формате Sprint Layout доступен по данной ссылке .

Фото сборки первых тестовых плат Homes-Smart-01

Подключение модуля к ПК

Источники питания

Ссылки



Published

01 November 2014

Tags

Материалы

Aвтономное питание ESP8266

Категория: Умный дом24М� 2015 Просмотров: 2369

Часто возникает вопрос с автономным питанием ныне уже популярного модуля ESP8266. В качестве стабилизатора чаще всего используется AMS1117.

Для начала, если ESP-01 (а он самый популярный и разумный в данной ситуации), надо сделать перемычку с 8 ножки esp8266 на пин RST и убрать светодиод.

Если перемычку не сделать — модуль из режима Deep Sleep не выйдет.

Далее возьмём проект examples\dht22_thingspeak.

Он хорош тем, что его очень легко поправить под свои цели отправки температуры и влажности.

Со всего проекта нам нужны user_main.c, который содержит основной пользовательский код, и user_config.h, который содержит настройки.

Это содержимое файла user_config.h. Задержку отправки изменять не надо, но если хочется, то можно. Но для однократной отправки — не надо.

Далее вносим изменения в код файла user_main.c, в процедуре dht22_cb:

В этой строке задаётся всё, что нам необходимо для отправки. Для народного мониторинга можно сделать автоматическое получение MAC-адреса, но на мой взгляд это лишнее — проще один раз написать.

Далее в том же файле, но в процедуре user_init, задаём таймер для процедуры спячки:

Здесь 5000 — время в миллисекундах, а 1 — повторять.

Ну и последняя, собственно, сама процедура спячки. В данном случае — 10 минут.

В итоге мы имеем модуль, который спит 10 минут, просыпается, отправляет данные с DHT22 (GPIO2) куда надо и засыпает на следующие 10 минут.

В активном режиме (от просыпания до засыпания) — от 240мА до 360мА. В среднем 300мА где-то в районе 5-10 секунд.
В спящем — <1mA.

Добавить комментарий

Закрыть меню