Радионяня с термометром и гигрометром на Esp8266 и Android

Привет, Пикабу!

У меня пару недель назад родились сразу две удивительные дочки, Василиса и Варвара:) Я от них просто без ума, они потрясающие! :) Но! Даже самому безумному папке нужно иногда отойти от кроваток своих дочурок,  сделать домашние дела, подключиться по vpn на работу или просто пойти и выкинуть мусор, пока любимая жена в душе.

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

Радионяня!

Ок!

(Можно смириться с ебучей ценой за трехсотенный девайс и не читать дальше)

Но это не наши методы, правда?

Пикабушник, ты видел цены на два куса пластика с тремя транзисторами внутри? Я чутка потерялся, буду честен. Всё, что имеет приставку "детское", почему то и цену имеет неоправданно завышенную. Не буду далее томить.

Я сделал радионяню на датчике звука от ардуино, присовокупил датчик температуры/влажности, и всё это мониторю по домашнему WiFi на любом Android-устройстве.

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

Радионяня с термометром и гигрометром на Esp8266 и Android Моё, Arduino, Nodemcu, Ky-038, Android, Dht22, Esp8266, Автоматизация, Длиннопост

Итак, что мы имеем. Два устройства, смартфон и nodemcu с датчиками.

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

Код для esp простейший:

#include <ESP8266WiFi.h>
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char *ssid = "wlan;
const char *pass = "pass";
WiFiServer server(80);
IPAddress ip(192,168,1,128);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
void setup() {
pinMode(A0,INPUT);
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, pass);
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected, using IP address: ");
Serial.println(WiFi.localIP());
server.begin();
dht.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
delay(3000);
float h = dht.readHumidity();
float t = dht.readTemperature();
int s = analogRead(A0);
String req = client.readStringUntil('\r');
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head><body>");
client.print(t);
client.print(":");
client.print(h);
client.print(":");
client.print(s);
client.println("</body></html>");
delay(1);
client.stop();
}

Исходники для андроида можно взять на гитхабе

https://github.com/antsharapov/ArduinoBabyMonitor

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

Радионяня с термометром и гигрометром на Esp8266 и Android Моё, Arduino, Nodemcu, Ky-038, Android, Dht22, Esp8266, Автоматизация, Длиннопост

Датчик звука у меня KY-038.

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

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


Спасибо за внимание, надеюсь быть полезным.

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

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

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Может подскажешь, у меня проблема в чем, пытаюсь сделать тестовый заезд, простое включение/выключение светодиода через вайфай, библиотеки загрузил, ком порт выбрал , вроде все даже компилируется и заливается, но ssid у NodeMCU не меняется, как был стандартный farylink так и вист, естественно скетч не работает. Пробывал на двух разных компах, думал мало ли конфлик драйверов. Делал по инструкции отсюда

http://arduino-project.net/nodemcu-v3-arduino-ide/

раскрыть ветку (6)
Автор поста оценил этот комментарий
Инициализацию вайфая как делаешь? Прописываешь свою точку и пасс к ней?
раскрыть ветку (5)
Автор поста оценил этот комментарий

Погоди, он подключается к моей точке доступа?

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

раскрыть ветку (4)
Автор поста оценил этот комментарий

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

раскрыть ветку (3)
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

разобрался)

Автор поста оценил этот комментарий

Разобрался) все таки надо было прописать мою сеть.

Нашел готовую программу Украинскую, blynk, там через облако управление идет. Крутая штука

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку