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

wemos d1 mini не включает с ws2812

medved1977

New member
Всем, доброго времени суток. столкнулся с такой проблемой. есть две платы wemos d1 mini и node MCU v3. обе платы определяются компом, дрова все установлены. при подключении к arduino ide определяется СОМ порт. в любую плату можно залить скетч blink если изменить время мигания то все работает. так же в обе платы можно свободно залить скетч для управления матрицей на основе WS2812/ скажу сразу, что матрица самодельная и рабочая, если к ней подключить готовый блок управления, то все работает. скетч заливается без ошибок, все проходит в штатном режиме. но если подключить плату к матрице, то ничего не работает. в скетче я пробовал разные имена портов и те что написаны на плате и те что в даташите есть и все разные комбинации, но все тщетно. пробовал залить в платы простой скетч, который закрашивает все диоды одним цветом, потом другим (использую для теста новых матриц), но и данный скетч не смог зажечь ws2812.
если бы плата была сгоревшей или же загрузчик поврежден, то я бы не смог ничего загрузить или же были какие-то ошибки при компилировании и заливке, но этого нет.
подскажите в чем проблема?
 

CodeNameHawk

Moderator
Команда форума
Видел в сети, что первый диод в ленте запитывают от 3.3в(или ставят дополнительный диод, как в ленте), а остальную ленту питают от 5в.
 

medved1977

New member
Видел в сети, что первый диод в ленте запитывают от 3.3в(или ставят дополнительный диод, как в ленте), а остальную ленту питают от 5в.
интересный подход (если можно ссылку, просто для повышения образования), но немного не понятный. питание нужно тогда разрывать и делать два источника питания, это возможно когда проблема в питании. у меня же немного другое. питания мне достаточно, блок питания мощный стоит, а вот нет управляющего сигнала.
 

svs2007m

Active member
Дружище нет ни схемы ни кода что ты заливаешь.(Google переполнен этими проектами) Ну а так "телепатически" могу предложить:

"– Слухай сюда! Положь колдобину со стороны загогулины и два раза дергани за пимпочки. Опосля чего долбани плюхалкой по кувыкалке и, кады чвокнет, – отскочь дальшее, прикинься ветошью и не отсвечивай. Потому как она в энто время шмяк тудыть,сюдыть, ёксель-моксель, ёрш твою медь... Пш-ш-ш! – И ждешь покаостынет. Остыло – подымаесся, вздыхаешь. Осторожненько вздыхаешь, просебя, шобы эта быдла не рванула! И бегишь за угол за пол-литрой. Потому как пронесло! " :)
 

CodeNameHawk

Moderator
Команда форума
интересный подход (если можно ссылку, просто для повышения образования), но немного не понятный. питание нужно тогда разрывать и делать два источника питания, это возможно когда проблема в питании.
Все наверное пошло отсюда https://hackaday.com/2017/01/20/cheating-at-5v-ws2812-control-to-use-a-3-3v-data-line/
Но я видел схему, где просто первый светодиод питается от 3.3в, на вашей платке есть и 5в и 3.3в.

Посмотрите https://esp8266.ru/forum/threads/esp8266-i-ws2812-v-arduino-ide-ehto-ochen-prosto.1948/
https://esp8266.ru/esp8266-ws2812-arduino/
 
Последнее редактирование:

medved1977

New member
Дружище нет ни схемы ни кода что ты заливаешь.(Google переполнен этими проектами) Ну а так "телепатически" могу предложить:

"– Слухай сюда! Положь колдобину со стороны загогулины и два раза дергани за пимпочки. Опосля чего долбани плюхалкой по кувыкалке и, кады чвокнет, – отскочь дальшее, прикинься ветошью и не отсвечивай. Потому как она в энто время шмяк тудыть,сюдыть, ёксель-моксель, ёрш твою медь... Пш-ш-ш! – И ждешь покаостынет. Остыло – подымаесся, вздыхаешь. Осторожненько вздыхаешь, просебя, шобы эта быдла не рванула! И бегишь за угол за пол-литрой. Потому как пронесло! " :)
прошу прощения , что не вставил раньше код. но он самый простой, который просто зажигает все светодиоды одним цветом, просто для проверки. кстати, если вместо wemos подключить ARDUINO NANO то все будет работать.
Код:
#define PIN  D2// пин DI

#define NUM_LEDS 256// число диодов
#include "Adafruit_NeoPixel.h"

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
  strip.begin();
  strip.setBrightness(200);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop() {
  // заливаем белым
 strip.setBrightness(250);   
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFF0000);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем красным
  for (int i = 0; i < NUM_LEDS; i++ ) {
    strip.setBrightness(200);    // всю ленту
    strip.setPixelColor(i, 0x00FF00);     // залить красным
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем синим
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x0000FF);
    strip.setBrightness(200); // залить синим
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем зеленым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFFFF00);     // залить зеленым
    strip.show();         
    strip.setBrightness(200); // отправить на ленту
    delay(10);
  }
 }
 

medved1977

New member
Все наверное пошло отсюда https://hackaday.com/2017/01/20/cheating-at-5v-ws2812-control-to-use-a-3-3v-data-line/
На я видел схему, где просто первый светодиод питается от 3.3в, на вашей платке есть и 5в и 3.3в.

Посмотрите https://esp8266.ru/forum/threads/esp8266-i-ws2812-v-arduino-ide-ehto-ochen-prosto.1948/
https://esp8266.ru/esp8266-ws2812-arduino/
проблем с питанием нет. данный способ так же ничего не дал.
 

CodeNameHawk

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

Попробуйте за менить
#define PIN D2// пин DI
на
#define PIN 4
 
Последнее редактирование:

medved1977

New member
данный код работает на arduino nano, Arduino LGT8F328P , STM32. данный код был опробован на ленте ws2812 и на отдельно спаянный светодиодах ws2812/ если в коде менять количество светодиодов, то я смог зажечь 256 шт. при этом если в скетче поставить количество 256, а по факту подключить меньше, то все равно все будет работать. что касается проверки напряжения. при подключении питания к ленте было замерено напряжение на блоке питания без нагрузки и под нагрузкой на самом последнем диоде. напряжение без нагрузки 5.01В а под нагрузкой 4.99В и это на 200 диодов. так что вопрос с питанием отпадает полностью.
в коде
#define PIN D2// пин DI
я менял имя пина на все что только возможно, даже номер 19 ставил (это физический номер, судя по распиновки).
 

medved1977

New member
коллеги, прошу на меня не ругаться, просто я еще раз повторюсь, мне нравиться что-то мастерить, но я далек от электроники и тут только методом проб и ошибок пытаюсь понять что и как. я собрал на бредборде схему мигания светодиодом, залил скетч, (см.ниже) все работает. тут еще выяснилась одна любопытная деталь. диод я подключил к выводу 5 wemos d1 mini в скетче прописал pin 5 не работает, прописал D5 - работает, так же попробовал прописать pin 14 и тут то же диод заморгал. но вот если залить скетч для светодиодов ws2812, то ничего не происходит, простой диод не моргает и ws2812 так же не работают. подскажите куда дальше двигаться??? пробовал залить все на arduino nano все работает.

Код:
int ledPin = D5; // Пин Arduino, который подключен к светодиоду
void setup() {               
 pinMode(ledPin, OUTPUT); // инициализируем вывод как выход
}
void loop() {
digitalWrite(ledPin, HIGH); // ВКЛ светодиод
delay(1000); // ждать 1000 миллисекунд (1 секунда)
digitalWrite(ledPin, LOW); // ВЫКЛ светодиода
delay(1000); // ждять 1 секунду
}
 

medved1977

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

svs2007m

Active member
Русским по белому сказано. WS2812 работает только !!!!!!!!!!!! с библиотеками см.выше. По свои "просто диоды" забудь. :)
 

CodeNameHawk

Moderator
Команда форума
Попробовал я ваш скетч, он рабочий.
Работает на двух скоростях.
Я, для проверки подключил ленту ( у меня 1 метр ленты WS2812В ) к 3,3В и к 13 ноге есп12е, стабилизатор AMS 117 на 3,3В выдержал, но грелся сильно.
Возле самой ленты стоит резистор на 1,2 кОм между +5в и DIn.
В скетч добавил вывод в сериал, теперь точно видно, что есп стартует.
Код:
#define Led_PIN  13// пин DIn

#define NUM_LEDS 56// число диодов
#include "Adafruit_NeoPixel.h"

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, Led_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("Start.");
  strip.begin();
  strip.setBrightness(200);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop()
{
  // заливаем белым
strip.setBrightness(250);  
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFF0000);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем красным
  for (int i = 0; i < NUM_LEDS; i++ ) {
    strip.setBrightness(200);    // всю ленту
    strip.setPixelColor(i, 0x00FF00);     // залить красным
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем синим
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x0000FF);
    strip.setBrightness(200); // залить синим
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем зеленым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFFFF00);     // залить зеленым
    strip.show();        
    strip.setBrightness(200); // отправить на ленту
    delay(10);
  }
}

Ну и подключенная библиотека.
Untitled.png

Кстати, корпуса ленты и есп соединили?
 

medved1977

New member
Попробовал я ваш скетч, он рабочий.
Работает на двух скоростях.
Я, для проверки подключил ленту ( у меня 1 метр ленты WS2812В ) к 3,3В и к 13 ноге есп12е, стабилизатор AMS 117 на 3,3В выдержал, но грелся сильно.
Возле самой ленты стоит резистор на 1,2 кОм между +5в и DIn.
В скетч добавил вывод в сериал, теперь точно видно, что есп стартует.
Код:
#define Led_PIN  13// пин DIn

#define NUM_LEDS 56// число диодов
#include "Adafruit_NeoPixel.h"

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, Led_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("Start.");
  strip.begin();
  strip.setBrightness(200);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop()
{
  // заливаем белым
strip.setBrightness(250); 
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFF0000);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем красным
  for (int i = 0; i < NUM_LEDS; i++ ) {
    strip.setBrightness(200);    // всю ленту
    strip.setPixelColor(i, 0x00FF00);     // залить красным
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем синим
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x0000FF);
    strip.setBrightness(200); // залить синим
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем зеленым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFFFF00);     // залить зеленым
    strip.show();       
    strip.setBrightness(200); // отправить на ленту
    delay(10);
  }
}

Ну и подключенная библиотека.
Посмотреть вложение 9629

Кстати, корпуса ленты и есп соединили?
вечером попробую посмотреть что монитор выдает. корпус ESP и ленты соединен.
то что этот скетч рабочий, я знаю я его использую для тестов при пайки матриц.
 
Сверху Снизу