Метеостанция на arduino от а до я. часть 4

Скетч для работы с датчиками DHT11 и DHT22 в Arduino

#include "DHT.h"
#define DHTPIN 2 // Тот самый номер пина, о котором упоминалось выше
// Одна из следующих строк закоментирована. Снимите комментарий, если подключаете датчик DHT11 к arduino
DHT dht(DHTPIN, DHT22); //Инициация датчика
//DHT dht(DHTPIN, DHT11);
void setup() {
  Serial.begin(9600);
  dht.begin();
}
void loop() {
  delay(2000); // 2 секунды задержки
  float h = dht.readHumidity(); //Измеряем влажность
  float t = dht.readTemperature(); //Измеряем температуру
  if (isnan(h) || isnan(t)) {  // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
    Serial.println("Ошибка считывания");
    return;
  }
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.println(" *C "); //Вывод показателей на экран
}

После загрузки скетча и подключения датчика, результат измерений можно посмотреть в окне монитора порта. Там будут выводиться значения температуры и влажности. Если что-то пошло не так, проверьте правильность подключения датчика, соответствие номера порта на плате Arduino и в скетче, надежность контактов.
Если все работает и датчик дает показания, можете провести эксперименты. Например, поместить датчик в более холодное место или подышать на него, отслеживая при этом изменения . Если при запотевании уровень влажности увеличивается, значит датчик работает исправно. Подуйте на него тонкой струйкой – влажность уменьшится и температура вернется в норму.

На этом этапе вы сможете заметить разницу между реальным значением температуры и показаниями датчика с ардуино. Точность DHT11 гораздо хуже точности DHT22, о чем мы уже говорили в этой статье. Если у вас есть оба датчика, подключите их к плате Arduino и сравните результаты. По моему опыту, в среднем расхождение составляет больше градуса. Учитывайте это, используя эти датчики в своих проектах.

Android

Теперь напишем простое приложение для Андроид, которое запрашивает, получает, декодирует JSON-данные и отображает информацию на экране.

Наше Android-приложение будет простым насколько это возможно, только сама суть технологии. Далее вокруг этого «скелета» уже можно будет наворачивать различные «красивости».

Вот скриншот того, что должно получиться в итоге

Как видим UI просто спартанский, основан на LinearLayout, ничего лишнего.

В верхней части TextView показывает ID датчиков и их метео-данные. Кнопка «Обновить» инициирует повторный запрос к веб-серверу. Далее в EditText расположена единственная настройка программы — это URL запроса в виде

Что необходимо отметить?

В манифест добавьте строки разрешающие интернет и проверку состояния сетевого соединения :

Работа с сетью и получение данных с веб-сайта происходит следующим образом.

Используем AsyncTask, чтобы создать фоновую задачу отдельно от главного потока пользовательского интерфейса. Эта фоновая задача берет URL запроса и использует его для создания .

После того, как соединение установлено, AsyncTask загружает содержимое веб-страницы (JSON) как InputStream. Далее InputStream преобразуется в строку, которая декодируется с помощью JSONObject и отображается в пользовательском интерфейсе методом .

В MainActivity.java измените URL на ваш :

он будет использоваться по умолчанию при первом запуске Android приложения.

Принципиальные схемы

Передатчик

Передающая часть беспроводного термометра на ATMega328p
(для увеличения масштаба можно кликнуть по картинке правой кнопкой мыши и выбрать «Открыть ссылку/изображение в новой вкладке/новом окне»)

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

Приемник

Приемная часть беспроводного термометра на Arduino Mega
(для увеличения масштаба можно кликнуть по картинке правой кнопкой мыши и выбрать «Открыть ссылку/изображение в новой вкладке/новом окне»)

Пожалуйста, обратите внимание, что приемник построен на базе платы Arduino Mega, которая не изображена на схеме. Для подключения платы Arduino Mega соедините с ней радиочастотный модуль и LCD дисплей согласно метка на схеме

Дисплей 16×4 LCD1604

Подробнее о дисплее и работе с ним погуглите «Работа с символьными ЖКИ на базе HD44780». Отметим, что нужно внимательно отнестись к полярности подключения питания к ЖК-индикатору и чтобы напряжение питания было в диапазоне +4,5…5,5 В. Невнимательное отношение к этому может привести к выходу индикатора из строя!

Пин LCD 1604 Arduino MEGA Arduino UNO Описание
VSS GND GND GND
VDD 5 V 5 V 4,7 — 5,3V
RS 22 4 Высокий уровень означает, что сигнал на выходах DB0—DB7 является данными, низкий — командой
RW GND GND Определяет направление данных (чтение/запись). Так как операция чтения данных из индикатора обычно бывает невостребованной, то можно установить постоянно на этом входе низкий уровень
E 23 5 Импульс длительностью не менее 500 мс на этом выводе определяет сигнал для чтения/записи данных с выводов DB0-DB7, RS и WR
DB4 24 8 Входящие/исходящие данные
DB5 25 9
DB6 26 10
DB7 27 11
LED A+ +5V или резистор 220 Ом → +5VLED-A
LED B- GND
V0 GND или подстроечник на 10кОм

Программная инициализация будет выглядеть так:

Температура, влажность DHT11

Подключение датчика температуры и влажности DHT11 (SainSmart). Датчик расположите лицевой стороной вверх, выводы будут описаны слева направо.

DHT11 Arduino Mega
DATA Digital pin 2 (PWM) (см. ниже DHTPIN)
VCC 3,3—5 В (рекомендуется 5 В, лучше внешнее питание)
GND GND

Программная инициализация

Барометр BMP180

Подключение датчика атмосферного давления BMP180 (барометр) + температура по интерфейсу I2C/TWI.

BMP180 Arduino Mega
VCC не подключен
GND GND
SCL 21 (SCL)
SDA 20 (SDA)
3,3 3,3 В

Для UNO: A4 (SDA), A5 (SCL).

nRF24L01+

Краткие характеристики:

  • Диапазон частот 2,401 — 2,4835 Ггц
  • 126 каналов. Нулевой канал начинается с 2400 Мгц и далее с шагом 1 Мгц, например 70 канал находится соответственно на 2470 Мгц. При установке скорости передачи 2Mbps занимается ширина канала в 2 Мгц
  • Питание 1,9 — 3,6 В (рекомендуется 3,3 В)

Вот распиновка модуля.

Некоторые советуют сразу же припаять керамический конденсатор 100nF (можно 1µF, 10µF) на выводы питания RF для избежания электрических помех.

Распиновка nRF24L01+ (смотреть сверху платы там где чип, пины должны быть внизу) :

пин 2 3,3V пин 4 CSN пин 6 MOSI пин 8 IRQ
пин 1 GND пин 3 CE пин 5 SCK пин 7 MISO

Подключение для метеостанции:

Arduino Mega nRF24L01+
3,3 В VCC пин 2 (лучше внешнее питание)
пин D8 CE пин 3 (chip enable in)
SS пин D53 CSN пин 4 (chip select in)
SCK пин D52 SCK пин 5 (SPI clock in)
MOSI пин D51 SDI пин 6 (SPI Data in)
MISO пин D50 SDO пин 7 (SPI data out)
IRQ пин 8 (Interrupt output) не подсоединен
GND GND пин 1 (ground in)

Программирование радиомодуля будет подробно описано в программной части.

ESP8266

Распиновка ESP8266 (смотреть сверху платы там где чипы, пины должны быть внизу):

GND GPIO2 GPIO0 RX
TX CH_PD RESET VCC

Подключение ESP8266 для метеостанции:

ESP8266 Arduino Mega
TX 10 пин (SoftwareSerial RX)
RX 11 пин (SoftwareSerial TX)
VCC 3,3 В
GND GND
CH_PD Через резистор 10К к 3,3 В Arduino
GPI0 Необязательно. Через резистор 10К к 3,3 В Arduino
GPI2 Необязательно. Через резистор 10К к 3,3 В Arduino

КДПВ

Центральный блок в сборе. «Материнскую плату» вырезал из картонной коробки из-под обуви и к ней винтиками на 3 прикрутил всё остальное.

Как видим в этом месте всё питание осуществляется от пинов Ардуино, т.е. к блоку питания напрямую ничего не идёт, и пока мощи хватает.

Вроде всё. Ничего не забыл.

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

Разработка проекта

На современном рынке представлено множество устройств Arduino, имеющих различную комплектацию. Но универсального решения «на все случаи жизни» не существует. В зависимости от поставленной задачи каждый комплект подбирается в индивидуальном порядке. Чтобы избежать ошибок, требуется разработка проекта.

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

Как подключить проходной выключатель: одноклавишный, двухклавишный, как обычный, схемы, критерии выбора

Составление проекта для умного дома

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

Такое здание состоит из пяти основных зон — прихожей, крыльца, кухни, санузла, а также комнаты для проживания.

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

Отопительные устройства выполняют задачу поддержания необходимой температуры в помещении. Если в доме отсутствуют люди, нижний предел температуры падает до определенного уровня.

После появления людей в здании этот параметр поднимается до прежнего значения. Рекуперация воздуха осуществляется в случае, когда система обнаружила присутствие владельца. Продолжительность процесса — не более 10 минут в час.

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения. Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/.

Инструкция сборки домашней метеостанции Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • Ethernet порт HanRun HR911105A 15/10;
  • датчик DTH11;
  • макетная плата;
  • 2 светодиода и резистора на 10 кОм;
  • провода «папа-папа» и «папа-мама»;
  • роутер и LAN-кабель.

1. Соедините Arduino Uno и Ethernet порт HR911105A, как на фото ниже


Схема подключения 10 и 12 контактного Enternet модуля

Обратите внимание, что 10 контактный модуль Ethernet ENC28J60 Enternet HR911105A питается от разъема 3,3 V, а 12 контактный модуль от 5V. Кроме того, обозначения разъемов на HanRun HR911105A могут быть напутаны, например, ST — вместо SO

Соединения контактов должны быть надежными для стабильной работы проекта.

2. Подключите датчик DTH11 к Arduino Uno проводами «папа-мама»


Следите за правильностью подключения датчика и Ардуино

Обратите внимание, что данный сенсор не может измерять отрицательные температуры, поэтому его можно использовать только для измерения климата в комнате. Для уличной метеостанции следует применять датчик DS18B20 Arduino

Ранее мы уже подключали датчик DTH11 к микроконтроллеру и загружали библиотеку DHT.h, также нам потребуется библиотека Ethernet.h для модуля HR911105A.

3. Скачайте и распакуйте архивы с необходимыми библиотеками


Распаковываем архивы библиотек в C:\Program Files\Arduino\libraries

Если необходимые библиотеки в Arduino IDE у вас уже установлены, то пропустите этот пункт. Также вам потребуется настройка Wi-Fi роутера для организации локальной сети. У каждого производителя роутеров свои настройки, поэтому здесь мы останавливаться не будем. Обратитесь за инструкцией на официальном сайте производителя при возникновении трудностей с настройкой сети.

4. Скачайте и загрузите в Arduino скетч для домашней Метеостанции

Открыв в любом браузере страницу с адресом 192.168.1.55, вы увидите показания датчика DHT11, как на скрине ниже.  Скачать скетч для домашней Метеостанции можно здесь. Все основные функции в скетче прокомментированы, поэтому проблем с настройкой работы Метеостанции у вас возникнуть не должно. Чтобы красиво оформить свою web-страницу потребуются начальные знания HTML и CSS.

Скетч метеостанции Arduino с Ethernet HR911105A

#include <EtherCard.hh> // подключаем библиотеку для HR911105A
#include <DHT.h>              // подключаем библиотеку для DHT11

DHT dht(2, DHT11);     // пин для подключения DHT11

static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 }
static byte myip[] = { 192, 168, 1, 55 }; // постоянный IP адрес нашей страницы
static byte gwip[] = { 70, 117, 92, 55 };
byte Ethernet::buffer;                  // чем больше данных, тем больше требуется буфера
BufferFiller bfill;

int t,h;

void setup () {
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println("Failed to access Ethernet controller");
  ether.staticSetup(myip, gwip);
  dht.begin();
}

static void ReadDHT11() { // получаем данные с датчика
  h = dht.readHumidity();
  t = dht.readTemperature();
}

static word homePage() { // оформление Web страницы
  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
                 "HTTP/1.0 200 OK\r\n"
                 "Content-Type: text/html; charset=utf-8\r\n"
                 "Pragma: no-cache\r\n"
                 "\r\n"
                 "<meta name='viewport' content='width=device-width, initial-scale=1.0'>"
                 "<meta http-equiv='refresh' content='1'>"
                 "<title>Домашняя Метеостанция</title>"
                 "<h1 style='color:#0ea6f2'>Метеостанция</h1>"
                 "<h4 style='color:#666666'>Получение данных от датчика DHT11</h4>"
                 "<font size='3em'>Температура: $D C <br><br>Влажность: $D %</font>"
  ), t, h);
  return bfill.position();
}

void loop () {
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if (pos) {
    ReadDHT11();
    ether.httpServerReply(homePage());
  }
  
  delay(1);
}

Пояснения к коду:

  1. если web-страница будет «зависать», необходимо увеличить буфер;
  2. для настройки отображения web-страницы используйте оформление CSS.


В браузере у вас должна открыться страница метеостанции

Открыв в любом браузере на компьютере или смартфоне (если есть точка Wi-Fi) страницу 192.168.1.55, вы увидите показания датчика в реальном времени. Проверьте работу сенсора DHT11 и какие он будет давать показания влажности и температуры, обдувая датчик сначала теплым, а потом холодным воздухом. Заметим, что обновление web страницы происходит автоматически каждые 10 секунд.

Шаг 7. Программируем Ардуино

Подключите коммутационную плату к Arduino и подключите её к компьютеру. Откройте диспетчер устройств и наблюдайте за com-портом конвертера usb – ttl. В Arduino IDE выберите com-порт и плату правильно. Теперь здесь начинается сложная часть.

Если ваша плата FTDI имеет вывод DTR и она подключена для сброса, просто сохраните программу и загрузите ее в Arduino как обычно. Ошибки не будет. Но если у вас нет пина DTR, как у нас, то, прежде чем нажать кнопку загрузки, удерживайте кнопку сброса на плате, а затем нажмите кнопку загрузки. Удерживайте кнопку до тех пор, пока программа не скомпилируется, когда IDE говорит «загрузка», затем отпустите переключатель сброса. Затем код будет загружен.

Контроль и управление климатической системой

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

Основные достоинства данной функции:

  1. Отопление, или охлаждение температуры в помещении осуществляется одной общей системой.
  2. Возможность регулировки любых температурных режимов в помещении, в соответствии с погодными условиями климата.
  3. Каждое отдельное устройство имеет свои специальные датчики, которые регулируют работу того или иного механизма, и позволяет контролировать внутренний климат в помещении.

Общий принцип работы

Измеряющая данные окружающей среды метеостанция на Ардуино состоит из нескольких основных компонентов:

  • собственно плата управления Arduino (например, Uno). На нее поступает информация со внешних датчиков, контроллер выполняет вычисления и выводит информацию на экран;
  • электронный дисплей — служит для отображения поступивших с контроллера данных в понятной человекочитаемой форме;
  • сенсор влажности температуры. В подобных схемах популярны датчики DHT11 и DHT22. Они регистрируют данные среды и отдают их контроллеру;
  • макетная плата — основа для сборки всех компонентов. На ней фиксируются все элементы метеостанции, по ней же прокладываются электрические соединения;
  • соединительные провода — с «оголенными» концами под пайку или оснащенные штекерами.

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

Метеостанция на Arduino от А до Я. Часть 5 +9

  • 12.10.18 05:28


tim4dev

#426019

Хабрахабр

2400

Разработка под Arduino, DIY или Сделай сам

Окончание. Предыдущая часть.

  • Часть 1. Требования. Выбор железа. Общая схема
  • Часть 2. Софт. Центральный блок, железо
  • Часть 3. Центральный блок, софт
  • Часть 4. Заоконный датчик
  • Часть 5. MySQL, PHP, WWW, Android

Заоконный датчик. Программное обеспечение

Поговорим о программном обеспечении заоконного датчика. После этого у вас получится законченная система с которой уже можно экспериментировать.

Напомню, что сервер — это центральный, домашний блок, который может общаться с интернет через WiFi, а клиент — это удалённый, заоконный датчик, который передаёт данные на сервер по радиоканалу.

Исходный код как для сервера, так и для клиента находится здесь.
Исходные тексты снабжены подробными комментариями.

На клиенте почти ничего настраивать не надо.

Радиопередатчик nRF24L01+, точнее библиотека RadioHead, требует указания адресов сервера и клиента. Адреса предусмотрены на тот случай, если у вас будет серверов и клиентов больше чем один. Адрес — это просто любое целое число. Когда клиент посылает пакет с данными на сервер, то он указывает для какого сервера предназначен этот пакет. Сервер зная свой собственный адрес, в свою очередь, определяет для него ли предназначен этот пакет.

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

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

Настройки вольтметра для измерения питающего напряжения батареи необходимо изменить:

Для экономии энергии используется библиотека Lightweight low power library for Arduino.

Вот мои замеры фактического потребления для Arduino Pro Mini с этой либой :

  • обычно 25mA
  • при работе с DHT то же самое
  • при радио передаче 38 mA
  • при LowPower.idle 15 mA
  • при LowPower.powerDown 7.5 mA

Клиент делает замеры температуры, влажности и напряжения питания, упаковывает всё это в структуру данных, отсылает данные на сервер и «засыпает». Если при передаче произошли ошибки, то передача тут же повторяется.

Сервер (центральный, домашний блок) в свою очередь данные принимает, подтверждает прием и обрабатывает их.

База данных, MySQL, PHP, WWW-сервер

После проделанной работы у нас есть вполне работоспособная конструкция метеостанции. Но сейчас таких метеостанций пруд пруди, локальные поделки это уже не модно. У нас ведь интернет вещей.

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

Постановка задачи для «вебки» :

  • принимать и хранить данные метеостанции: температура, влажность, атмосферное давление, напряжение питания
  • отображать эти данные
  • строить графики.

При этом нам понадобится хостинг с поддержкой Apache, PHP и MySQL с модулем mysqli. И этим условиям удовлетворяет практически любой хостинг на планете Земля. Либо вместо хостинга будет ваш компьютер играющий роль сервера, подключённый к домашнему сетевому маршрутизатору и имеющий выход в Интернет.

Android

Теперь напишем простое приложение для Андроид, которое запрашивает, получает, декодирует JSON-данные и отображает информацию на экране.

Наше Android-приложение будет простым насколько это возможно, только сама суть технологии. Далее вокруг этого «скелета» уже можно будет наворачивать различные «красивости».

Вот скриншот того, что должно получиться в итоге

Как видим UI просто спартанский, основан на LinearLayout, ничего лишнего.

В верхней части TextView показывает ID датчиков и их метео-данные. Кнопка «Обновить» инициирует повторный запрос к веб-серверу. Далее в EditText расположена единственная настройка программы — это URL запроса в виде

Что необходимо отметить?

В манифест добавьте строки разрешающие интернет и проверку состояния сетевого соединения :

Работа с сетью и получение данных с веб-сайта происходит следующим образом.

Используем AsyncTask, чтобы создать фоновую задачу отдельно от главного потока пользовательского интерфейса. Эта фоновая задача берет URL запроса и использует его для создания .

После того, как соединение установлено, AsyncTask загружает содержимое веб-страницы (JSON) как InputStream. Далее InputStream преобразуется в строку, которая декодируется с помощью JSONObject и отображается в пользовательском интерфейсе методом .

В MainActivity.java измените URL на ваш :

он будет использоваться по умолчанию при первом запуске Android приложения.

Распаиваем разъёмы:

Отламываем от гребенчатого разъёма необходимое количество штырьков, вставляем в посадочное место, с нужной стороны, и производим пайку. Если гребёнка длинная то для начала можно припаять разъём первой ножки и последней, а затем паять промежуточные. Если у вас произошло замыкание соседних ножек, то макаем жало в канифоль как можно больше , затем греем место замыкания, но не более 2-3 секунд, плату держим под углом, чтобы лишний припой мог стечь, и аккуратно стряхиваем всю плату вниз одновременно убирая жало паяльника тоже вниз. Т.е. таким образом шаг за шагом избавляемся от лишнего припоя.

PHP и веб-сервер

Все настройки веб-интерфейса хранятся в . Измените его в соответствии с вашими настройками базы данных.

Задайте свой часовой пояс в формате PHP

Все доступные часовые пояса описаны здесь.

Задайте свой секретный ключ для доступа (в виде числа) который должен совпадать с константой из скетча

В нашем веб-сервере нет авторизации, входа по паролю, это усложнило бы всю конструкцию. Для прототипа это не нужно. Поэтому вся защита построена на файле , отсутствии и на этом секретном ключе для доступа.

Основной PHP скрипт принимает простой HTTP GET запрос с данными и сохраняет их в соответствующие таблицы базы данных. Если ключ не совпадает, то запрос будет отвергнут.

Скрипт используется для просмотра таблиц данных и содержит гиперссылки на остальные скрипты веб-интерфейса. Вызывайте его так

Например

выводит простые таблички, где надо помнить, что :

  • датчик с id 11 это домашний датчик на сервере,
  • датчик с id 20 это заоконный датчик.

Скрипт содержит функции, общие для всех PHP скриптов.

Скрипт отвечает за рисование графиков при помощи Google Charts. Вот, например, график питающего напряжения заоконного датчика. Напряжение повышается в солнечный день за счёт солнечной же батареи и затем блок питания на аккумуляторах постепенно разряжается.

экспортирует данные из таблиц базы данных MySQL в файл формата CSV. Для дальнейшего импорта и анализа в электронных таблицах.

экспортирует данные о напряжении питания заоконного датчика из базы данных MySQL в файл формата CSV. Полезно для отладки.

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

При приёме данных повсеместно используется функция для предотвращения попадания в БД некорректных значений.

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

ESP8266, WiFi и передача данных

И вот теперь возвращаемся к скетчу , к той его части, которая соединяется с точкой доступа WiFi и отсылает данные на веб-сервер.

Как я уже писал, мне не удалось найти нормальную библиотеку для Arduino для управления модулем ESP8266 с помощью AT команд, пришлось «колхозить» самому. Напомню так же, что вам придется прошить в ESP8266-01 прошивку определённой версии. И теперь когда всё готово, разберём как это работает.

Для доступа к веб серверу в скетче необходимо изменить вот эти константы

В в функции сначала производится переключение ESP8266 в режим Station, т.е. он начинает работать как WiFi клиент

и далее следует подключение к точке доступа

Если подключения не происходит, то попытка повторяется (однократно)

Затем выбирается режим одиночного подключения TCP/IP

При отсылке данных от датчиков типа DHT на вебсервер используется функция с указанием типа данных как

При отсылке данных от датчиков типа BMP на вебсервер используется та же функция с указанием типа данных как

На вход функция принимает строку HTTP GET запроса и отправляет её по назначению на веб-сервер.

Внутри себя проверяет доступность ESP модуля, посылая ему команду «AT», далее проверяется подключение к WiFi и производится переподключение, если необходимо. Затем отправляются данные и соединение TCP закрывается.

Android приложение

В наше время, когда уже каждый может мигать светодиодом, никакой метеостанцией никого не удивишь. Но если поделка умеет связываться с сервером через WiFi, имеет веб-морду и мобильное приложение, то это уже кое-что! Под сервером здесь имеется в виду конечно же сервер приложений, т.е. в нашем случае это PHP-обвязка и СУБД MySQL. Не достаёт вишенки на торте, а именно приложения под Android написанием которого мы сейчас и займёмся.

Общие характеристики и принцип работы паяльной станции

Внешний вид промышленной воздушной паяльной станции: 1 – блок управления, 2 − паяльник, 3 – фен, 4 − ручка для переноски, 5 – регуляторы температуры для фена и нагревателя

Анатомия паяльной станции достаточно проста и максимально отвечает необходимым условиям: аккуратная, «умная» пайка элементов. Сердце прибора − блок питания, внутри которого находится трансформатор, выдающий напряжение двух вариантов 12 или 24 Вольта. Без этого элемента все системы станции были бы бесполезны. Трансформатор отвечает за регулировку температуры. Блок питания снабжён терморегулятором и специальными кнопками запуска прибора.

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

Вариация самодельного паяльника для микросхем

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

В качестве ещё одного дополнительного элемента может выступать специальный инфракрасный нагреватель. Принцип его похож на работу термофена, он нагревает не место стыка, а определённую площадь. Однако, в отличие от термофена, здесь отсутствует поток тёплого воздуха. Профессиональные паяльные станции могут оборудоваться специальными сопутствующими инструментами, оловоотсосами и вакуумными пинцетами.