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

прерывания на wemos D1 mini

0Xotnik

New member
Всем привет. Подскажите, пожалуйста, как получить на wemos D1 mini точные 30 kHz. Нужен модулированный ИК-сигнал (диод TSAL6200), а читать его будет TSOP2230.
Таким способом точно не получается:
Код:
  unsigned long currentMillis = micros();
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
 
Всем привет. Подскажите, пожалуйста, как получить на wemos D1 mini точные 30 kHz. Нужен модулированный ИК-сигнал (диод TSAL6200), а читать его будет TSOP2230.
Таким способом точно не получается:
Код:
  unsigned long currentMillis = micros();
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
Вот мой рабочий код:
Код:
void SupraIR::markIR( uint16_t markLength )
{
    uint16_t beginning = (uint16_t)micros();
    while( (uint16_t)(micros() - beginning) < markLength )
    {
        digitalWrite( _pin, HIGH );
        delayMicroseconds( _halfPeriodicTime );
        digitalWrite( _pin, LOW );
        delayMicroseconds( _halfPeriodicTime ); //38 kHz -> T = 26.31 microsec (periodic time), half of it is 13
    }
}
 

nhknhk

New member
может вы подробнее расскажите зачем вам это нужно? просто под ардуино есть готовые библиотеки, которые достаточно просто реализуют передачу/прием ИК-сигналов. может их функционала вам хватит? будет проще готовый скетч понять чем дергать куски кода из контекста чужих проектов.
 

0Xotnik

New member
Это попытка сделать модернизированную версию. Первое устройство - лазерный целеуказатель, сделано на базе Arduino nano. Прерыватель это пара TSAL6200 - датчик освещенности от adafruit.
Два года отработало, но не без недостатков. Из основных - низкая помехоустойчивость и необходимость разбирать герметичный корпус для подключения к USB контроллеру.
Wemos D1 mini вроде бы можно "прошивать" по wi-fi. Захотелось сделать устройство, которое можно перепрограммировать не разбирая герметичный корпус, что есть важный плюс, и с беспроводной подзарядкой аккумулятора. Железо всё прикупил. Контроллером нужно получить 30 кГц меандр для ИК-излучателя и считывать 0-1 с TSOP2230 и отдать управляющий ШИМ сигнал на зажигание лазера. Питание - 14650 Li-ion, импульсный стабилизатор 5 вольт(пока не приехал) для D1 mini и лазера. TSAL6200 и лазер управление через транзистор 2N2222A. Настройки программы сводятся к подбору ШИМ и подбору алгоритма, который позволит экономить аккум. Как-то так.
Уважаемый nikolz, после Вашего первого сообщения стало тоскливо. Ну, от простого к сложному. Поэкспериментировал с примером от Олег Решетник. Получил 29.8 кГц. Меандр скачет, понятно. По идее TSOP должен видеть. У него +-5%. Подключил диод - срыв генерации. Может БП дохлый. Пока писал сообразил, что нужно проверить. Но удручает то, что я не могу активировать нужные пины. Подключил на D4. Потому что увидел в примере:
Код:
pinMode(LED_BUILTIN, OUTPUT);
Так работает. Пробую:
Код:
int ledPin = 1;
// int ledPin = D1;
тыкаю щупом в D1 - никаких шевелений. Искал примеры... Как объявить ногу?
Да esp8266, это не Ардуино. Мозгов не хватает.

Спасибо за поддержку. Написал подробнее. Может рассмешил. Но всё как есть. Задачи простые, знаний не много. Мне бы примеры посмотреть. Нахожу всё не то - с сетевыми задачами.
 

Вложения

Подключил диод - срыв генерации
Добрый день!

У пинов ESP8266 очень низкая нагрузочная способность.
У меня инфракрасный светодиод используется для управления кондиционером.
Он подключен через npn транзистор по такой схеме:
база - к пину ESP8266
эмиттер - к GND
коллектор - к минусу светодиода, плюс светодиода к +3.3v
 
Увы, у Вас типичное заблуждение относительно того, что сделать на ESP что-то реально работающее - очень просто даже ничего не разбираясь.
Халява с готовыми прошивками тоже требует знаний.
Уважаемый Гуру, раздел форума называется "для начинающих".
Не может человек быть сразу специалистом, сначала все пребывают в статусе чайников.
И задавать вопросы - это нормально для человека.
Я понимаю, что для того, чтобы правильно задать вопрос, нужно знать 90% ответа,
но откуда новичок сразу может все знать?
Для чего существует форум?
Разве не для помощи друг другу?
 

0Xotnik

New member
Да, ещё пару жизней для изучения всего интересного не помешало бы. Ну ничего, сделаем проще.
Всем большое спасибо за помощь.
:)
 
Есть интернет - и там есть ответы на многие вопросы.
но Ваши вопросы показывают что Вы даже банальные ответы поленились прочитать.
Вы даже не удосужились посмотреть как включать пины как писать программы в дурине и вообще азы программирования.
вот и увы вы свое время цените а чужое нет, вот и пишите все что не знаете, вместо того чтобы поискать ответ в инете.
При всем уважении, топикстартер не я, я только заступился за топикстартера.
 
Сверху Снизу