Девятый урок из цикла «Arduino и Telegram». В нём мы научимся получать информацию об атмосферном давлении при помощи telegram бота и датчика bmp180.[/vc_wp_text][intense_alert border_radius=»10px» close=»1″ close_memory=»2″ shadow=»0″ margin_bottom=»» tab_984862461=»» tab_411412670=»» tab_1479978263=»» tab_1595777515=»» tab_1376433241=»» tab_928372326=»» tab_629785658=»» tab_2101863514=»»]Для прохождения данного урока необходимо настроить ArduinoIDE и подключить телеграм бота, как показано в первом уроке. [/intense_alert][intense_alert color=»warning» border_radius=»10px» close=»1″ close_memory=»2″ shadow=»0″ margin_bottom=»» tab_984862461=»» tab_411412670=»» tab_1479978263=»» tab_1595777515=»» tab_1376433241=»» tab_928372326=»» tab_629785658=»» tab_2101863514=»»]Не забывайте о технике безопасности при работе с электрическими устройствами![/intense_alert][vc_tta_tour][vc_tta_section title=»Компоненты» tab_id=»1533052599223-87f8f29b-8836″][vc_wp_text]Для выполнения урока понадобятся: плата nodemcu, breadboard, соединительные провода, датчик давления bmp180.[/vc_wp_text][vc_gallery interval=»3″ images=»3378,2938,2935,2915″ img_size=»full»][/vc_tta_section][vc_tta_section title=»Схема подключения» tab_id=»1533052599255-3f48ffbd-5196″][vc_wp_text]Схема, которую предстоит собрать, представлена на рисунке. Датчик можно питать и от 3.3, и от 5 вольт. Советую подключать к VIN (5V).
[/vc_wp_text][/vc_tta_section][vc_tta_section title=»Подключение библиотеки» tab_id=»1533052726133-c1bf9a3e-d13b»][vc_wp_text]Для работы bmp180 c nodemcu понадобится библиотека. Вот ссылка на нужную.
Библиотека подключается в меню “Скетч” — “Подключить библиотеку” — “добавить .zip библиотеку”. В открывшемся окне выберите скачанный архив с библиотекой.
[/vc_wp_text][/vc_tta_section][vc_tta_section title=»Код прошивки» tab_id=»1533052764925-f1e94aea-256c»][vc_wp_text]Перед тем, как вы загрузите прошивку, обратите внимание, что настройки wifi сети и бота лежат в файле secrets.h.
Прошивку можно скачать на github.
//файл с настройками сети и токеном бота
#include "secrets.h"
//подключение библиотек
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <TelegramBot.h>
#include <SFE_BMP180.h>
#include <Wire.h>
//объявление бота и датчика
WiFiClientSecure net_ssl;
TelegramBot bot (BotToken, net_ssl);
SFE_BMP180 pressure;
void setup() {
//подключение wifi, бота, датчика
Serial.begin(9600);
wifiConnect();
bot.begin();
pressure.begin();
}
void loop() {
//получение сообщения
message m = bot.getUpdates();
//если запрос давления
if (m.text.equals("Pressure")){
//то отправляем данные
bot.sendMessage(m.chat_id, String(round(getPressure()))+" Pa");
}
}
//функция для подключения к wifi
void wifiConnect(){
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
}
//функция для получения давления
double getPressure() {
char status;
double T, P, p0, a;
status = pressure.startTemperature();
if (status != 0) {
// ожидание замера температуры
delay(status);
status = pressure.getTemperature(T);
if (status != 0) {
status = pressure.startPressure(3);
if (status != 0) {
// ожидание замера давления
delay(status);
status = pressure.getPressure(P, T);
if (status != 0) {
return (P);
}
}
}
}
}
[/vc_wp_text][/vc_tta_section][vc_tta_section title=»Демонстрация работы» tab_id=»1533052885267-7d9f3c1d-aef8″][vc_wp_text]Демонстрация работающего устройства.[/vc_wp_text][vc_video link=»http://youtu.be/gXW5NbnSxmY»][/vc_tta_section][/vc_tta_tour][vc_wp_text]Если вы заметили какие-то ошибки или что-то показалось непонятным, буду очень рад если напишите об этом в комментариях. [/vc_wp_text][/vc_column][/vc_row]