Tonchik
Тут вопрос не в том как работают, а что кто-то уперся в 5В 🤣🤣🤣 и не вылезал из них 🤓 Сейчас вылез… надеюсь ))
Max
DIY проект: cистемная информация на LCD дисплее GC9A01 (часть 1) Всем доброго дня! Мой никнейм Arduinum628, я занимаюсь DIY проектами и программированием на Python и C++. В этой статье пойдёт речь о выводе системной информации с ПК на круглый LCD дисплей GC9A01. Сама идея проекта мне пришла во время разговора с другом Иваном @proDream Я рассказал ему, что заказал пару LCD дисплеев GC9A01 с Ali Express для своих будущих DIY проектов. Во время разговора Иван внезапно сказал, что ему-бы пригодился девайс для вывода системной информации с ПК. Я подумал - почему-бы не научиться использовать этот дисплей на подобном проекте?! Сам проект я буду писать не для нужд друга, а скорее в целях обучения работы с этим дисплеем. Как я понял, что ему нужно что-то более компактное и встраиваемое в корпус ПК. По моему совету он купил компактную плату esp32 с дисплеем и будет писать своё решение сам. Я же собираюсь делать что-то вроде приборной панели и поставлю её за клавиатурой. Это чем-то будет напоминать спидометр автомобиля =) Читать далее https://habr.com/ru/articles/916486/?utm_campaign=916486&utm_source=habrahabr&utm_medium=rss
Азат
Хочу взять осциллограф портативный какой-нибудь. Не слишком дорогой но за свои деньги ок. Мб кто-то уже брал что-то подобные и рекомендации есть
Азат
Именно осел необходим или логического анализатора хватит?
Лог анализатора хватит думаю, даже лучше будет
Resident
https://qdkingst.com/en la1010 юзаю! Доволен
Арс
Ребят помогите с подключением аккумулятора с дисплеем 1602 I2C
Арс
Арс
Пока что да, если будут скажу
En
Доброго. Выдает такое. Как прошить? "Скетч использует 301054 байт (22%) памяти устройства. Всего доступно 1310720 байт. Глобальные переменные используют 12960 байт (3%) динамической памяти, оставляя 314720 байт для локальных переменных. Максимум: 327680 байт. esptool.py v4.8.1 Serial port COM3 Connecting... Chip is ESP32-C3 (QFN32) (revision v0.4) Features: WiFi, BLE, Embedded Flash 4MB (XMC) Crystal is 40MHz MAC: 98:88:e0:хх:хх:хх Uploading stub... Running stub... A fatal error occurred: Packet content transfer stopped (received 0 bytes) Не удалась загрузка: ошибка при загрузке: exit status 2"
Agent
Ребят помогите с подключением аккумулятора с дисплеем 1602 I2C
И как помочь? Прийти и воткнуть или что? Инструкция на каждом углу валяется.
Арс
Не понимаю как соединять ,если знал б не спросил помощи
Agent
Не понимаю как соединять ,если знал б не спросил помощи
Ну так ты набери в поисковике - подключение дисплея 1602 к esp32. Тебе выдаст сотню сайтов, где подробно описано, как это сделать. Интернет - слыхал про такое?
Роджер
Что за хрень? Почему при использовании: char MAC[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; В цикле Serial.print(MAC[i], HEX); Получаю FFFFFFFF
Agent
А чат зачем?
Смотря кому))
Max
А что не так?
Роджер
В том, что я получаю: MAC:0xFFFFFFFF:0xFFFFFFFF:0xFFFFFFFF:0xFFFFFFFF:0xFFFFFFFF:0xFFFFFFFF А должен: MAC:0xFF:0xFF:0xFF:0xFF:0xFF:0xFF
Роджер
Кому кто должен?
Мне. Serial.print("MAC:"); for(int i = 0; i < 6; i++) { Serial.print("0x"); Serial.print(MAC[i], HEX); if(i < 5) { Serial.print(":"); } } Serial.println();
Роджер
ㅤ
Кажется догоняю
Да. Выведи в uint8_t какой нибудь
Роджер
Да. Выведи в uint8_t какой нибудь
Понял, забыл, про ошибки при работе с разными типами.
N
Ваша ошибка (`Failed to connect to ESP8266: Serial data stream stopped`) типична для ESP-01 и обычно связана с проблемами питания, подключения или настройки загрузчика. Вот пошаговые решения: ### 1. Проверка питания (самая частая причина!) - Используйте отдельный источник 3.3V: - USB-UART адаптеры часто не выдают достаточный ток (ESP-01 требует до 300-500mA при старте). - Подключите внешний стабилизированный источник 3.3V к пинам VCC и GND модуля, сохранив подключение GND к программатору. - Добавьте конденсаторы: - 100–470 мкФ между VCC и GND (сглаживает скачки напряжения). - 0.1 мкФ между EN и GND (для стабильности). ### 2. Правильная схема подключения Убедитесь, что пины настроены в режим прошивки: - GPIO0 → GND (обязательно для входа в bootloader). - GPIO2 → VCC (через резистор 1-10 кОм). - EN (или `CH_PD`) → VCC. - RST оставьте свободным (или подключите к кнопке сброса). ### 3. Аппаратные решения - Короткие провода: Длина проводов RX/TX не должна превышать 10–15 см. - Понизьте скорость прошивки: esptool.py --baud 115200 write_flash ... (замените 115200 на 9600, если проблема сохраняется). - Уберите USB-хабы: Подключите программатор напрямую к порту USB 2.0 ПК. ### 4. Программные действия - Перезапустите модуль вручную: - Отключите питание. - Подключите GPIO0 к GND. - Подайте питание, запустите прошивку. - После начала записи (5–10%) можно отключить GPIO0 от GND. - Используйте другой софт: - [Flash Download Tool (Espressif)](https://www.espressif.com/en/support/download/other-tools) для Windows. - Команда для esptool.py: esptool.py --port COMx --baud 115200 write_flash 0x0 firmware.bin ### 5. Проверьте железо - Замените USB-UART адаптер: Дешёвые адаптеры (CH340/CP2102) иногда работают нестабильно. - Тест модуля: - Подключите GPIO0 к VCC (режим запуска) и проверьте вывод в мониторе порта (115200 бод). Должны увидеть boot mode:(1,X). ### Если ничего не помогает: - Прошейте через Arduino IDE: - Выберите плату: "Generic ESP8266 Module". - Укажите параметры: Flash Mode: DOUT, Flash Size: 1MB. - Попробуйте другой ESP-01: Возможна аппаратная неисправность модуля. Важно: При работе с ESP-01 первые 5% записи критичны — если процесс доходит до этого этапа, проблема обычно в питании/помехах. Укоротите провода и добавьте конденсаторы!
Спасибо, за развернутый ответ.
Anton
Программу поди тоже чат писать должен
Роджер
жесткач конечно с кодингом у тебя👀
Знаешь более оптимальный способ вывести пользователю информацию красиво? Мне бы хватило и тупо бай.
Vlad
вот действительно, сакральный вопрос: а для чего ты насобирал в кучу железок, небось гугля какие нужны, если не собираешь их все до победного ? зачем вообще все эти начинания, если не осваивать всю эту область знаний нормально, не полагаясь на помощь чата зала...
Agent
У нас проще print(machine.unique_id().hex(разделитель))
"у вас" это где, в микропитоне?😂
Resident
"у вас" это где, в микропитоне?😂
А че с ним не так? Свой си при желании туда легко добавить если хочется, под капотом тот же Си
Agent
А че с ним не так? Свой си при желании туда легко добавить если хочется, под капотом тот же Си
Как мне показалось - бессмысленная ограниченная хрень, в которую можно заманить только новичков, которым страшно от "много" сишного кода.
Agent
Чем ограничена? Размерами ram и flash 😁😂
Как минимум местом на флэшке. Но в целом не особо помню - 5 лет назад поковырял, не зашло.
Resident
Вкусовщина конечно, знаю кто на rust espхи мучает 😁 вот это мощ конечно
Евгений
5v to 5v 3.3v to 3.3v Gnd to gnd Sda to sda Scl to Scl 🤷‍♂
Ты уверен что это будет работать? =)
Азат
Привет! Существует способ скетчи грузить на esp удалённо, через интернет?
Resident
Привет! Существует способ скетчи грузить на esp удалённо, через интернет?
Конкретно скетчи нет, вот и разница с микропитоном =) в целом прошивку ты сможешь удалённо обновить, а скеч уже в прошивке должен быть скомпилипован
Alexey
Привет! Существует способ скетчи грузить на esp удалённо, через интернет?
Можно скинуть юзеру на телефон, а он через телефон обновит.
Vlad
Привет! Существует способ скетчи грузить на esp удалённо, через интернет?
да, я делаю так: 1) пишу прошивку esp32 с wifi-ota 2) придумываю протокол обмена командами, которые esp32 должен исполнять, получив с сервера 3) пишу сервер с БД и интерфейсом 4) и вот только теперь из интерфейса - складываю в БД команду для выбранного esp32 5) и тот её читает с сервера, и выполняет, т.е. качает ota-обновление прошивки с указанного в команде URL, и обновляется
Anton
espruino - можно писать на жс
Anton
я думал tcl сделать...
Anton
можно какуюнить не сильно требовательную хрень типа ленты программировать
Anton
Есть сомнения 😊?
"верь мне, я инженер" (с)
Max
Собрал вот такую плату - ESP32 + LCD 1602 + реле (встроенное 30В 2А или внешнее open drain) + RS485 или I2C + RTC (опционально). Под готовый корпус! Использовать можно во многих случаях: как термостат, метеостанцию, алкогометр и т.д. и т.п. Насколько интересно описание данного проекта? Стоит ли время тратить на статью (летом его всегда особенно не хватает)? Опрос будет ниже...
Max
Max
Anton
Evgeniy
C++ не только можно, но и нужно использовать для программирования микроконтроллеров. Как тут писалось, никаких исключений и операторов new. Для отмены исключений есть даже флаг компилятора, специально для нас. Чем С++ лучше си: 1. Строгая типизация. Если что-то не так, получите ошибку при компиляции, а не поиск её в отладке. Наглядный пример, если в функцию передаётся тип перечисления, а вы в си вписали что-то не то (int, к примеру), то в си вы пройдёте компиляцию, в C++ получите ошибку компиляции. 2. Ссылки. Философия С++: "не плати за то, что тебе не нужно". Ссылки не занимают место в памяти, код с ссылками смотрится аккуратнее, чем код с указателями. Всегда можно забыть поставить * или &. 3. Классы (структуры). Банально удобно описывать не только саму структуру, но и действия с ней. Каждый регистр можно обернуть в классовую обёртку с методами, которые своим названием указывают, что вы делаете. Если код необходимо много комментировать, то это плохой код. 4. Объекты. В функцию (класс, метод класса) можно передать ссылку на объект вывода микроконтроллера, а не писать кучу дефайнов всех регистров (легко ошибиться, много исправлять, особенно для всяких stm32). 5. Шаблоны. Забудьте про многострочные макросы, ошибки в которых отладить крайне сложно, дебагер в них просто не войдёт. Шаблоны куда лучше препроцессора. 6. Оверхеда нет. Это распространённый миф. Грамотный код, написанный на с++ даёт меньший объём бинарников, натыкался на исследования, даже ролики с конференций есть на ютьюбе. (полагаю всему виной ссылки вместо указателей и оптимизация шаблонов).
Resident
C++ не только можно, но и нужно использовать для программирования микроконтроллеров. Как тут писалось, никаких исключений и операторов new. Для отмены исключений есть даже флаг компилятора, специально для нас. Чем С++ лучше си: 1. Строгая типизация. Если что-то не так, получите ошибку при компиляции, а не поиск её в отладке. Наглядный пример, если в функцию передаётся тип перечисления, а вы в си вписали что-то не то (int, к примеру), то в си вы пройдёте компиляцию, в C++ получите ошибку компиляции. 2. Ссылки. Философия С++: "не плати за то, что тебе не нужно". Ссылки не занимают место в памяти, код с ссылками смотрится аккуратнее, чем код с указателями. Всегда можно забыть поставить * или &. 3. Классы (структуры). Банально удобно описывать не только саму структуру, но и действия с ней. Каждый регистр можно обернуть в классовую обёртку с методами, которые своим названием указывают, что вы делаете. Если код необходимо много комментировать, то это плохой код. 4. Объекты. В функцию (класс, метод класса) можно передать ссылку на объект вывода микроконтроллера, а не писать кучу дефайнов всех регистров (легко ошибиться, много исправлять, особенно для всяких stm32). 5. Шаблоны. Забудьте про многострочные макросы, ошибки в которых отладить крайне сложно, дебагер в них просто не войдёт. Шаблоны куда лучше препроцессора. 6. Оверхеда нет. Это распространённый миф. Грамотный код, написанный на с++ даёт меньший объём бинарников, натыкался на исследования, даже ролики с конференций есть на ютьюбе. (полагаю всему виной ссылки вместо указателей и оптимизация шаблонов).
Мне 1.5мб за глаза пока хватает
Evgeniy
В Яндексе используют плюсы
Anton
C++ не только можно, но и нужно использовать для программирования микроконтроллеров. Как тут писалось, никаких исключений и операторов new. Для отмены исключений есть даже флаг компилятора, специально для нас. Чем С++ лучше си: 1. Строгая типизация. Если что-то не так, получите ошибку при компиляции, а не поиск её в отладке. Наглядный пример, если в функцию передаётся тип перечисления, а вы в си вписали что-то не то (int, к примеру), то в си вы пройдёте компиляцию, в C++ получите ошибку компиляции. 2. Ссылки. Философия С++: "не плати за то, что тебе не нужно". Ссылки не занимают место в памяти, код с ссылками смотрится аккуратнее, чем код с указателями. Всегда можно забыть поставить * или &. 3. Классы (структуры). Банально удобно описывать не только саму структуру, но и действия с ней. Каждый регистр можно обернуть в классовую обёртку с методами, которые своим названием указывают, что вы делаете. Если код необходимо много комментировать, то это плохой код. 4. Объекты. В функцию (класс, метод класса) можно передать ссылку на объект вывода микроконтроллера, а не писать кучу дефайнов всех регистров (легко ошибиться, много исправлять, особенно для всяких stm32). 5. Шаблоны. Забудьте про многострочные макросы, ошибки в которых отладить крайне сложно, дебагер в них просто не войдёт. Шаблоны куда лучше препроцессора. 6. Оверхеда нет. Это распространённый миф. Грамотный код, написанный на с++ даёт меньший объём бинарников, натыкался на исследования, даже ролики с конференций есть на ютьюбе. (полагаю всему виной ссылки вместо указателей и оптимизация шаблонов).
можно — да. нужно — нет.
Sergey
C++ не только можно, но и нужно использовать для программирования микроконтроллеров. Как тут писалось, никаких исключений и операторов new. Для отмены исключений есть даже флаг компилятора, специально для нас. Чем С++ лучше си: 1. Строгая типизация. Если что-то не так, получите ошибку при компиляции, а не поиск её в отладке. Наглядный пример, если в функцию передаётся тип перечисления, а вы в си вписали что-то не то (int, к примеру), то в си вы пройдёте компиляцию, в C++ получите ошибку компиляции. 2. Ссылки. Философия С++: "не плати за то, что тебе не нужно". Ссылки не занимают место в памяти, код с ссылками смотрится аккуратнее, чем код с указателями. Всегда можно забыть поставить * или &. 3. Классы (структуры). Банально удобно описывать не только саму структуру, но и действия с ней. Каждый регистр можно обернуть в классовую обёртку с методами, которые своим названием указывают, что вы делаете. Если код необходимо много комментировать, то это плохой код. 4. Объекты. В функцию (класс, метод класса) можно передать ссылку на объект вывода микроконтроллера, а не писать кучу дефайнов всех регистров (легко ошибиться, много исправлять, особенно для всяких stm32). 5. Шаблоны. Забудьте про многострочные макросы, ошибки в которых отладить крайне сложно, дебагер в них просто не войдёт. Шаблоны куда лучше препроцессора. 6. Оверхеда нет. Это распространённый миф. Грамотный код, написанный на с++ даёт меньший объём бинарников, натыкался на исследования, даже ролики с конференций есть на ютьюбе. (полагаю всему виной ссылки вместо указателей и оптимизация шаблонов).
Про минусы не забудьте, примерно столько же минусов можно насчитать
Vlad
привет если esp32 контроллер работает по https с сервером каждые 17 секунд, при этом ни стек, ни колво свободной памяти не меняется... то почему через 73 часа чото там внутри зависает, и СССССабака его сбрасывает ? как это понять, по USB цеплять его и логгировать неделями?
Anton
какая версия есп-идф?
Anton
Огласите весь список, пожалуйста!
я могу свой сказать. 1. классы. действительно, это скорее плюс. мне бы в си очень пригодилось наследование структур, чтобы функция, принимающая указатель на базовую структуру могла автоматически без приведения типов принимать так же указатели на производные. минус — иногда изменение в базовом классе вызывает рефакторинг всего проекта. 2. шаблоны. вряд ли имеет смысл применять для микроконтроллеров. эта фича плодит код. 3. STL — это во первых шаблоны, во вторых, там под капотом масса динамического выделения памяти, что крайне вредно на микроконтроллере. 4. ссылки — сахар, приятно, но жить можно и с указателями. 5. строгая типизация — ну плюс-минус это полезно, особенно автоматический вывод типов. 6. пространства имён — моя вторая боль в си. очень хочу. 7. си проще и понятнее как именно он компилируется. алгоритмы нижнего уровня пишутся примерно одинаково что на си, что на с++.
Evgeniy
Что насчёт удобства тестирования кода?
Vlad
какая версия есп-идф?
последняя актуальная, через Ардуину 2.3.6, якобы 5.1
Evgeniy
Удобнее тестировать, если весь код на С++ или нет разницы
Anton
последняя актуальная, через Ардуину 2.3.6, якобы 5.1
вот моя бага: https://github.com/espressif/esp-idf/issues/7045
ok-home
C++ не только можно, но и нужно использовать для программирования микроконтроллеров. Как тут писалось, никаких исключений и операторов new. Для отмены исключений есть даже флаг компилятора, специально для нас. Чем С++ лучше си: 1. Строгая типизация. Если что-то не так, получите ошибку при компиляции, а не поиск её в отладке. Наглядный пример, если в функцию передаётся тип перечисления, а вы в си вписали что-то не то (int, к примеру), то в си вы пройдёте компиляцию, в C++ получите ошибку компиляции. 2. Ссылки. Философия С++: "не плати за то, что тебе не нужно". Ссылки не занимают место в памяти, код с ссылками смотрится аккуратнее, чем код с указателями. Всегда можно забыть поставить * или &. 3. Классы (структуры). Банально удобно описывать не только саму структуру, но и действия с ней. Каждый регистр можно обернуть в классовую обёртку с методами, которые своим названием указывают, что вы делаете. Если код необходимо много комментировать, то это плохой код. 4. Объекты. В функцию (класс, метод класса) можно передать ссылку на объект вывода микроконтроллера, а не писать кучу дефайнов всех регистров (легко ошибиться, много исправлять, особенно для всяких stm32). 5. Шаблоны. Забудьте про многострочные макросы, ошибки в которых отладить крайне сложно, дебагер в них просто не войдёт. Шаблоны куда лучше препроцессора. 6. Оверхеда нет. Это распространённый миф. Грамотный код, написанный на с++ даёт меньший объём бинарников, натыкался на исследования, даже ролики с конференций есть на ютьюбе. (полагаю всему виной ссылки вместо указателей и оптимизация шаблонов).
я в плюсах не очень - но если вы исключения отключили то как выделение памяти контролируете ?
Anton
я в плюсах не очень - но если вы исключения отключили то как выделение памяти контролируете ?
это можно так или иначе свести к си. просто не надо пользоваться библиотеками типа STL
Vlad
вот моя бага: https://github.com/espressif/esp-idf/issues/7045
подозрительно фигурирует срок в 3 суток, 72 часа...
Anton
ppl, кто программировал smd led матрицы? типа этой: https://www.aliexpress.com/item/1005007842230324.html я что-то уже хочу подглядеть в решения.
Anton
короче, там 4 шифт регистра. два на данные строки, два на выыбор строки. я пытаюсь разобраться в каком порядке загонять туда биты.
Anton
всё, разобрался. работает. изза того что это шифт-регистры, приходится жонглировать координатами чтобы попасть в правильный порядок байт
Александр
У меня есть плата esp32zero,хочу реализовать смену видеоканалов,как это сделать?