• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Запрос примеров для Sming

waskez

New member
Здравствуйте!
Возможно ли с помощью фреймворка Sming реализовать ШИМ на модуле ESP8266-01. Хочу реализовать проект управление телевизором и другими устройствами c помощью смартфона.
Спасибо.
 
waskez, а можно по подробнее,зачем вам ШИМ для телевизора?Да,кстати,шим тут также реализуется,как на Ардуино,перейдите на первую страницу этой темы
 

waskez

New member
Зачем лишняя деталь, если можно обойтись без Arduino.
ШИМ нужен для 38 kHz.
 
Последнее редактирование:

anakod

Moderator
Команда форума
waskez, т.е. речь про ИК, верно? По частотам не тестировал, но в Sming я реализовывал analogWrite.
 

waskez

New member
Пробовал реализовать шим таким образом, но похоже не работает должным образом:
Код:
#include <user_config.h>
#include <SmingCore/SmingCore.h>

#define LED_PIN 2 // GPIO2

#define TOPBIT 0x80000000

#define SAMSUNG_HDR_MARK  4500
#define SAMSUNG_HDR_SPACE 4500
#define SAMSUNG_BIT_MARK  560
#define SAMSUNG_ONE_SPACE 1690
#define SAMSUNG_ZERO_SPACE  560
#define SAMSUNG_RPT_SPACE 46000

void sendSamsung(unsigned long data);
void pulseIR(unsigned long microseconds);

Timer procTimer;


void blink()
{
    sendSamsung(0xE0E040BF);
}

void pulseIR(unsigned long microseconds)
{
    cli();
    while(microseconds > 0)
    {
        digitalWrite(LED_PIN, 0);
       delayMicroseconds(13); // 12
       digitalWrite(LED_PIN, 1);
        delayMicroseconds(13); // 12
        microseconds -= 26; // 24
    }
    sei();
}

void sendSamsung(unsigned long data)
{
    for (int r = 0; r < 2; r++)
    {
        pulseIR(SAMSUNG_HDR_MARK);
        digitalWrite(LED_PIN, 1);
        delayMicroseconds(SAMSUNG_HDR_SPACE);
        for (int i = 0; i < 32; i++)
        {
            if (data & TOPBIT)
            {
                pulseIR(SAMSUNG_BIT_MARK);
                digitalWrite(LED_PIN, 1);
                delayMicroseconds(SAMSUNG_ONE_SPACE);
            }
            else
            {
                pulseIR(SAMSUNG_BIT_MARK);
                digitalWrite(LED_PIN, 1);
                delayMicroseconds(SAMSUNG_ZERO_SPACE);
            }
            data <<= 1;
        }
        pulseIR(SAMSUNG_BIT_MARK);
        digitalWrite(LED_PIN, 1);
        delayMicroseconds(SAMSUNG_RPT_SPACE);
    }
}

void init()
{
    pinMode(LED_PIN, OUTPUT);
    digitalWrite(LED_PIN, 1);
    procTimer.initializeMs(5000, blink).start();
}
 
Последнее редактирование:

anakod

Moderator
Команда форума
На мой взгляд, если интервалы подобраны под Ардуино, то здесь может не заработать, процессор в 5-10 раз быстрее. Возможно надо подработать с ними, но в идеале, конечно, осциллограф.
 

JustACat

Moderator
Команда форума
Поддержку @anakod - без осцилла или хотя бы лог-анализатора трудно завести IR/ИК на новом железе.
Так что сначала нужно, чтобы кто-то по этим граблям прошелся и адаптировал какую-то из библиотек Ардуино под ESP.
На Ардуино мне больше всего нравится библиотека от Ken Shirriff. Ссылки: раз, два, и инфо: три. Ну и общее инфо по отправке/приему IR на МК.
Есть добровольцы? :)
 

pvvx

Активный участник сообщества
Зачем лишняя деталь, если можно обойтись без Arduino.
ШИМ нужен для 38 kHz.
По прерываниям на TIMER0 доступна минимальная длительность до 5us (200кГц и для I2C по прерываниям не хватет :(), при этом у процессора всего 400 тактов CLK на 80MHz между срабатываниями таймера... и всё при этом ещё работает. Если смените опции трансляции библиотеки и исходников в GCC, то можно наверно дотянуть до 3us с работой системы :) Таймер и gpio
А ШИМ для ИК управления проще делать на SPI или UART :)
Тем более входы-выходы UART0 и UART1 меняются местами на ходу
reg 0x3ff00028:
bit0: SWAP TX0<->TX1, RX0<->RX1, RTS0<->RTS1, CTS0<->CTS1
bit2: SWAP TXo<->RTS0, RX0<->CTS0, ...
bit3: SWAP TX1->? RX1->?

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

FGX

Member
Добрый день. Помогите разобраться с примером TcpClient_NarodMon, я в него добавил небольшое изменение по считыванию с ком порта(выкладывал выше) все работало, но через некоторое время модуль перестает отправлять данные. Вот лог того что происходит раз в пять минут где должна была быть передача
rm matchpm close 7 0 0/718839010reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1
А вот лог когда передача работает
rm matchpm close 7 0 0/388824243reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
Причем если отключать и включать роутер, то когда модуль работает это ему не мешает, а вот если уже перестал то и не помогает, только передернуть питание.
 

JustACat

Moderator
Команда форума
FGX, что-то я по логу не пойму - у вас модуль постоянно переподключается к WiFi что ли?
Я у себя когда его гонял на отправку раз в 6 минут (5 не стал ставить, т.к. вдруг на народмон забанят :)), то в логах было только вот это:
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 47 (47)
TcpClient request completed
onReadyToSendData: 3
nmOnReadyToSend
sourceEvent: 3
TCP sent: 47
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
И оно повторялось раз в 6 минут по таймеру...
Не могли бы вы полный лог привести, скажем, работу модуля в течение 3-6 отправок (за пол часа, например)?
 

FGX

Member
Не могли бы вы полный лог привести, скажем, работу модуля в течение 3-6 отправок (за пол часа, например)?
Да сейчас сделаю, модуль начинает переподключаться только если вайфай выключить -включить и тогда он работает, но пишет что каждый раз переподключается, а потом перестает(но роутер показывает что модуль всегда подключен). Может тут где-то собака зарыта.
АА<0><0>А<0><0><0>аА<0>А<0>ААа<0>А<0><0><0>а<0>Аа<0>А<0>АА<0><0><0><0><0><0><0><0><0><0><0><0><0>А<0><0>А<0><0><0>а<0><0><0>аА<0>а<0>Аа<0><0>А<0>аА<0>аААааА<0>ААА<0>А<0>А<0>а<0><0><0>А<0><0><0><0><0>АаААаАА<0>АА<0><0>аАААААА<0><0>ААА<0>А<0>А<0><0>А<0>А<0><0><0>а<0><0>А<0>А<0>а<0>Аа<0><0>А<0>АА<0><0>А<0><0>ААаААа<0>А<0><0>А<0><0><0><0><0>А<0>А<0><0><0>А<0><0><0><0><0><0><0><0><0><0><0><0><0>а<0><0><0><0>ааАа<0>а<0>аа<0><0>А<0><0><0><0>А<0><0><0>а<0><0><0><0>А<0><0><0><0><0>АаААаААаААА<0><0>а<0><0><0>А<0><0><0>аА<0><0>а<0><0>аАа<0>Аа<0>АА<0>АА<0><0><0><0>аА<0><0>а<0>а<0>А<0>АААаААА<0>ААААААаАА<0><0><0><0><0>А<0><0>А<0>аАа<0><0>А<0><0>ааАааА<0>а<0><0>а<0><0><0><0><0>АА<0><0><0><0>А<0><0>АаА<0>А<0><0><0><0><0><0><0><0><0>А<0><0><0><0>АААА<0>А<0>АА<0><0><0><0><0>АаА<0><0><0><0><0><0><0>а<0><0><0><0><0>аАааАааААаа<0><0><0><0><0><0>АА<0><0>А<0><0>аАа<0>Аа<0>АА<0>АА<0><0><0><0>аА<0><0>а<0>а<0>А<0>АААаААА<0>ААаАААаАА<0><0><0><0><0>АА<0><0>А<0><0>Аа<0><0>А<0><0>ааАааА<0>а<0><0>а<0><0><0><0><0>АА<0><0><0><0>А<0><0>АаА<0>А<0><0>а<0><0>аА<0>А<0><0><0>А<0><0><0><0>АААА<0>А<0>АА<0><0>АА<0><0><0><0><0><0><0><0><0><0>а<0><0><0><0><0>аАааАааАААа<0><0><0><0><0><0>АА<0><0>А<0><0>ААА<0>АА<0>АА<0>АА<0><0><0>А<0>Аа<0><0>А<0>А<0>А<0>ааААааА<0>аАААаААаа<0><0><0><0><0>а<0><0>аА<0><0>АА<0><0>А<0>а<0>Аа<0>АаАаАаААА<0><0><0><0><0>А<0><0>Аа<0><0>АА<0><0>а<0>аА<0><0>шшшЂ<0>шx<0>шш<0>Ђш<0>xшшшxшшxx<0>шшш<0>шшшшшшш<0>Ђx<0>ЂшЂшшшЂxшш<0>x<0>шшxш<0><0>ш<0><0><0><0><0><0><0>ш<0><0>ш<0><0><0><0>Ђ<0><0><0>ш<0><0>ш<0>ш<0>шxшшшxшЂ<0><0><0><0><0>Ђ<0>ш<0><0><0>шшx<0>шш<0><0>xш<0>Ђxшшя

0

Station configuration was updated to: Kurochka
mode : sta(18:fe:34:a0:45:4f)add if0READY!
scandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1I'm CONNECTED to WiFi
mac: 18-FE-34-хх-хх-хх
connect to: narodmon.ru
DNS record found: narodmon.ru = 94.19.113.221
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 68 (68)
TcpClient request completed
TCP sent: 68
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
beacon timeoutrm matchpm close 7 0 0/1641492688scandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneno Kurochka found, reconnect after 1sreconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...rm matchpm close 7 0 0/1052084reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
rm matchpm close 7 0 0/404016476reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
 
Последнее редактирование:

JustACat

Moderator
Команда форума
FGX, не, вы сделайте именно так, когда он сам работает, и вы ничего нигде не трогаете и не переподключаете.
Ну и второе: код из моего примера тестового (без каких-либо изменений кроме настроек WiFi конечно) работает при тех же условиях или то же глохнет? Проверьте это.
 

FGX

Member
FGX, не, вы сделайте именно так, когда он сам работает, и вы ничего нигде не трогаете и не переподключаете.
Ну и второе: код из моего примера тестового (без каких-либо изменений кроме настроек WiFi конечно) работает при тех же условиях или то же глохнет? Проверьте это.
Что значит не переподключайте, если я роутер раза два за день дергаю, так как интернет отваливается и после этого модуль начинает писать про переподключения и перестает работать. Изменений в коде влияющих на работу вайфай нет. Проверьте именно лог после выключения и включения роутера (это обычная ситуация и модуль не должен от этого переставать работать), лог я выше выложил.
 

JustACat

Moderator
Команда форума
FGX, так, я что-т запутался... Получается, что именно он подключиться нормально к роутеру не может? Или именно данные не шлет? Просто судя по логу вроде данные шлет же ну по 76 (байт видимо). Если я где-то туплю - прошу прощения. Но реально запутался...
 

FGX

Member
FGX, так, я что-т запутался... Получается, что именно он подключиться нормально к роутеру не может? Или именно данные не шлет? Просто судя по логу вроде данные шлет же ну по 76 (байт видимо). Если я где-то туплю - прошу прощения. Но реально запутался...
Объясняю, включаем приблуду с модулем, он подключается к вай фай и начинает отправлять раз в 5 минут данные все хорошо в логе только
+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
Затем если выключить роутер и включить начинает отправлять опять нормально все, но в логе уже странная стрчка как будто он каждые пять минут подключается к вай фай
rm matchpm close 7 0 0/898822774reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1+TCP connection
connect to: narodmon.ru
TcpConnection::connect result:, 0
OnConnected
TCP connected
onReadyToSendData: 0
nmOnReadyToSend
sourceEvent: 0
TCP connection send: 76 (76)
TcpClient request completed
TCP sent: 76
onReadyToSendData: 2
nmOnReadyToSend
sourceEvent: 2
nmOnCompleted
successful: 1
TCP connection closing
-TCP connection
И наконец после какого то времени, в какой момент не знаю смотрю когда мне приходит уведомление что датчик неисправен, он перестает отправлять данные и каждые 5 минут в логе всего одна строчка
rm matchpm close 7 0 0/898822774reconnectscandoneadd 0aid 1pm open phy_2,type:2 0 0cnt connected with Kurochka, channel 4dhcp client start...ip:192.168.1.100,mask:255.255.255.0,gw:192.168.1.1
 

JustACat

Moderator
Команда форума
FGX, да, так все ясно.
Блин, фигово, тогда надо опять отлавливать некий глюк, который вылезает не сразу. Возможно, опять переполняется что-то где-то (имею ввиду память).
Начать нужно с того, чтобы без отключений вашего роутера заметить, через какое время и кол-во отправок ESP начинает глючить. Просто задачу нужно решать поэтапно, и перво-наперво нужно выявить закономерность. Можно в лог дополнительно писать время (хотя бы через millis() или как ее там) и текущее количество уже совершенных отправок с момента запуска (вставить переменную счетчик и инкрементить/выводить ее). Время можно и на народмон поглядеть, по времени последней отправки данных.
 

FGX

Member
FGX, да, так все ясно..
https://www.dropbox.com/s/ix2t9wn53fx7myx/Скриншот 2015-04-26 15.57.26.png?dl=0
Вот скрин где видно, что модуль в 8 часов перестал отправлять данные и в 12 опять сам начал, хотя дома никого и не было. И так раз в день бывает на него находит, скорее всего его провоцирует пропадание интернета, у меня бывает такое, но когда интернет работает уже точно, то модуль не хочет.
 

Dr. Morg

New member
Не нашёл в Sming и тут на форуме, есть ли возможность читать данные с аналоговых датчиков (как в Arduino analogRead)?
 

JustACat

Moderator
Команда форума
Dr. Morg, дак analogRead и будет :) Не забывайте только, что ADC в ESP ущербный (имхо). Меряет только от 0 до 1 вольт. И ведет себя у всех по разному. У кого работает, у кого нет.
Почитайте в теме про Свалку @pvvx - там точно было.

Update: ввел в заблуждение: на analogRead оно пока что не вынесено. Так что по SDK смотрите.
 
Последнее редактирование:
Сверху Снизу