RSS блога
Подписка
Cмарт розетка REDMOND SkyPort 100S - добавляем в умный дом
Это продолжение моей первой статьи на смарт цоколь Redmond. В этой статье речь пойдет о другом девайсе компании Redmond — Cмарт розетка REDMOND SkyPort 100S. Данное устройство тоже базируется на чипе nRF51822 и как говорится тут сам бог велел попробовать. Итак, была куплена данная розетка. Корпус разбирается так же легко, как и цоколь, доступ к порту программирования еще удобнее. Но забегая вперед скажу что все немного сложнее, чем мне показалось сначала. Схему данной розетки не стал прозванивать, тк уже существует куча обзоров по модернизации и модификации данных розеток.
В одном из обзоров нашел схему, этим и ограничился. Из схемы понятно что задействованы так же как и в смарт цоколе всего 4 пина на модуле nRF51822. На устройстве присутствует тактовая кнопка подключенная к пину p0.00, два светодиода, красный подключен к пину p0.01, зеленый подключен к пину p0.02. Электромагнитное реле на 10A подключено к пину p0.03. Итак запускаем Arduino IDE и начинаем накидывать экземпл:
Как видите код небольшой и достаточно простой, спасибо за это сообществу Mysensors
Как с кодом было закончено, подключил программатор к устройству и перепрошил. Подключение программатора к розетке делается очень просто, в моем случае я взял два обычных выводных резистора, откусил кусачками проволоку, и проволки сделал крючки, согнув ее, вставил эти крючки в провода программатора и «подцепился» к розетке, на видео видно как я это делаю. Пришло время тестировать то что получилось. Вставил смарт розетку в розетку :), открыл Мажордомо, все нормально, розетка уже присутствовала в сети Майсенсорс. Отправляю первую команду на включение и… ребут :) неожиданный поворот. Первое что пришло в голову, просадка по питанию во вперя включения реле. Сел, переделал программу, убрал включение светодиода при включении реле, что бы снизить потребление. И это сработало, розетка перестала перезагружаться при вкобчении реле.… Но не надолго :). И так стало понятно что модулю не хватает питания. Схема бестрансформаторного блока питания расчитана так, что бы хватало только на работу в режиме BLE. В Mysensors же используется другой режим радиомодуля 2.4 Ггц(совсестимость с RF24 — ANT). Итак имеем дефицит примерно 10мА. Обсудив проблемку в нашем чате Mysensors остановился на решении добавить балластный конденсатор, так как это очень простая манипуляция, то что нужно для повторения. Вот что получилось:
Собрав снова розетку, немного взволнованно приступил к тестам. Отработка теперь шла превосходно. Переписал логику работы программы обратно, добавл еще #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX), тоесть врубил радио на полную мощьность(да с Mysensors это очень просто).… Работает. Без ошибок. Без перезагрузок. Это победа :)
А есть же еще у этого производителя другие устройства на nRF51822 — датчик дыма, датчик движения, датчик газа, тепловые конвертеры, вентиляторы, увлажнители, очиститили, чайники… ;)
То место где всегда помогут установить библиотеки Mysensors, поддержку плат nRF51-52, разблокировать модули, объяснят как за полчаса собрать на ардуиках сеть сенсоров без головной боли —@mysensors_rus
В одном из обзоров нашел схему, этим и ограничился. Из схемы понятно что задействованы так же как и в смарт цоколе всего 4 пина на модуле nRF51822. На устройстве присутствует тактовая кнопка подключенная к пину p0.00, два светодиода, красный подключен к пину p0.01, зеленый подключен к пину p0.02. Электромагнитное реле на 10A подключено к пину p0.03. Итак запускаем Arduino IDE и начинаем накидывать экземпл:
#define BUTTON_PIN 0
#define RED_LED_PIN 1
#define GREEN_LED_PIN 2
#define RELAY_PIN 3
boolean iswitch = 0;
boolean flag_button = 0;
static uint32_t previousMillis;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
//#define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_LOW)
#define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX)
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 201
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define RELAY_ID 1
#include <MySensors.h>
MyMessage lMsg(RELAY_ID, V_STATUS);
void preHwInit() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
}
void before()
{
digitalWrite(RED_LED_PIN, HIGH);
}
void presentation()
{
sendSketchInfo("REDMOND R nRF51", "1.0");
wait(300);
present(RELAY_ID, S_BINARY, "RELAY SWITCH");
wait(300);
}
void setup()
{
digitalWrite(RED_LED_PIN, LOW);
wait(300);
digitalWrite(GREEN_LED_PIN, HIGH);
wait(200);
digitalWrite(GREEN_LED_PIN, LOW);
wait(200);
digitalWrite(GREEN_LED_PIN, HIGH);
wait(200);
digitalWrite(GREEN_LED_PIN, LOW);
wait(200);
digitalWrite(GREEN_LED_PIN, HIGH);
wait(200);
digitalWrite(GREEN_LED_PIN, LOW);
wait(500);
send(lMsg.set(iswitch));
wait(500);
}
void loop()
{
if (digitalRead(BUTTON_PIN) == LOW && flag_button == 0) {
flag_button = 1;
previousMillis = millis();
wait(20);
}
if (digitalRead(BUTTON_PIN) == LOW && flag_button == 1) {
//что нибудь потом добавить, может быть
}
if (digitalRead(BUTTON_PIN) == HIGH && flag_button == 1) {
if ((millis() - previousMillis > 0) && (millis() - previousMillis <= 3000)) {
if (iswitch == 0) {
digitalWrite(GREEN_LED_PIN, HIGH);
wait(10);
} else if (iswitch == 1) {
digitalWrite(GREEN_LED_PIN, LOW);
wait(10);
}
flag_button = 0;
iswitch = !iswitch;
digitalWrite(RELAY_PIN, iswitch);
wait(1500);
send(lMsg.set(iswitch));
}
if (millis() - previousMillis > 3000)
{
flag_button = 0;
}
}
}
void receive(const MyMessage & message) {
if (message.type == V_STATUS) {
if (message.sensor == RELAY_ID) {
if (mGetCommand(message) == 1) {
if (message.isAck()) {
//AckG = 1;
} else {
wait(50);
if (iswitch == 0) {
digitalWrite(GREEN_LED_PIN, HIGH);
}else
if (iswitch == 1) {
digitalWrite(GREEN_LED_PIN, LOW);
}
iswitch = !iswitch;
wait(10);
digitalWrite(RELAY_PIN, iswitch);
wait(1500);
send(lMsg.set(iswitch));
}
}
if (mGetCommand(message) == 2) {
}
}
}
}
Как видите код небольшой и достаточно простой, спасибо за это сообществу Mysensors
Как с кодом было закончено, подключил программатор к устройству и перепрошил. Подключение программатора к розетке делается очень просто, в моем случае я взял два обычных выводных резистора, откусил кусачками проволоку, и проволки сделал крючки, согнув ее, вставил эти крючки в провода программатора и «подцепился» к розетке, на видео видно как я это делаю. Пришло время тестировать то что получилось. Вставил смарт розетку в розетку :), открыл Мажордомо, все нормально, розетка уже присутствовала в сети Майсенсорс. Отправляю первую команду на включение и… ребут :) неожиданный поворот. Первое что пришло в голову, просадка по питанию во вперя включения реле. Сел, переделал программу, убрал включение светодиода при включении реле, что бы снизить потребление. И это сработало, розетка перестала перезагружаться при вкобчении реле.… Но не надолго :). И так стало понятно что модулю не хватает питания. Схема бестрансформаторного блока питания расчитана так, что бы хватало только на работу в режиме BLE. В Mysensors же используется другой режим радиомодуля 2.4 Ггц(совсестимость с RF24 — ANT). Итак имеем дефицит примерно 10мА. Обсудив проблемку в нашем чате Mysensors остановился на решении добавить балластный конденсатор, так как это очень простая манипуляция, то что нужно для повторения. Вот что получилось:
Собрав снова розетку, немного взволнованно приступил к тестам. Отработка теперь шла превосходно. Переписал логику работы программы обратно, добавл еще #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX), тоесть врубил радио на полную мощьность(да с Mysensors это очень просто).… Работает. Без ошибок. Без перезагрузок. Это победа :)
А есть же еще у этого производителя другие устройства на nRF51822 — датчик дыма, датчик движения, датчик газа, тепловые конвертеры, вентиляторы, увлажнители, очиститили, чайники… ;)
То место где всегда помогут установить библиотеки Mysensors, поддержку плат nRF51-52, разблокировать модули, объяснят как за полчаса собрать на ардуиках сеть сенсоров без головной боли —@mysensors_rus
Самые обсуждаемые обзоры
+73 |
3675
145
|
+53 |
3870
69
|
+34 |
2955
55
|
Можете сделать фотку модуля 51822?
Upd: глянул доки, все там есть, dc-dc может не работать только если жадные китайцы не поставили дроссель на модуль nrf
There is NO way to heat up water if Keep Warm mode is off.
обычно используется mqtt поверх тцпип или зигби и усб адаптер для кучи всяких готовых датчиков или самопальных на базе зигби
недавно писал одному клиенту, который хотел сделать мониторинг напряжений в 11 точках на зигби, так малость изучил эту систему и протокол
а бт мало подходит для автоматики, чисто костыль
только если тупо с телефона щелкать
а где температурный датчик?((
Хочу такую розетку европейскую БЕЗ переходников, что бы дистанционно включать отопление (калорифер 1000Вт) с контролем температуры.
Sonoff замечательно, но не хочу возиться с проводкой.((
Кто-что посоветует?
Розеток то все наделали, но или беда с датчиком, либо с штекером!
Или ваш т.датчик увидится через приложение Редмонда?
PS… не понял сначала про какой датчик,… да мой датчик естественно не видит приложение редмонд, и розетка теперь его не видит. Датчики я делаю сам такие или такие или даже такие и работает это все на MySensors
Так и приходится гейты на esp и arduino делать, а ноды на NRF
https://aliexpress.com/item/item/32950360272.html
Wi-Fi + RF:
https://aliexpress.com/item/item/32952150158.html
или совсем дешёвый вариант:
https://aliexpress.com/item/item/32993647682.html
если вы пишете обзоры в интернете для большой аудитории людей, не кажется ли вам, что эти обзоры должны быть написаны грамотно?
если нет, забейте.
Кто хочет начать «с нуля», найдите мою статью на Гиктаймс, там все разжевано, и тема ВТ раскрыта
б) многим он ближе/понятнее, чем MySensors
Если что, я довольно часто пишу в тему nrf5 action! на форуме mysensors, а дома у меня все датчики на них (еще со времен nRF24)
Статья: habr.com/ru/post/407683/