Ардуинки, ESP, программирование
93 subscribers
51 photos
8 videos
5 files
15 links
Канал о программировании и вообще об электронике

Вот наш чат: https://yangx.top/arduinki_esp_chat
加入频道
Всем привет! На связи я, а это канал об электронике(это и так понятно). Всего будет 8 видов сообщений(уже больше):
#начало - для новичков
#avrки - для тех, кто уже что-то знает
#espшки - для тех, кому уже мало обычных ардуинок
#вифи - для тех, кому нравится вайфай
#поделки - для тех, кто зашёл поглазеть
#ардуиноиде - фишки и настройка ArduinoIDE
#резисторы - радиоэлектроника и собирание схем
#платки - виды ардуинок, еспшек и других камушков
#уроки — ну тут всё понятно
#железки — всякие датчики и модули
#библиотеки — использование разных библиотек
#гайверхаб — гайверхаб
#адреска — адресная лента

В следующем сообщении будут основные термины
👍1
В ближайшее время на канале выйдет инструкция, как собрать такую лампу.
А теперь зачем это всё: в магазинах похожая штука стоит 5 тыс. р., а эта собрана примерно за 1500р., в магазинном варианте нет эффектов и вайфая, а тут есть, в этой лампе можно настроить потребляемый ток, а в магазинной лампе нельзя. Короче дешевле, лучше, но придётся самому собрать
#поделки
#espшки
#вифи
#адреска
👍4
А теперь коротко про вайфай в еспшках.
1. Режим АР — точка доступа от самой еспшки, запускается так:
WiFi.mode(WIFI_AP);  // настройка режима вифи
WiFi.softAP("ssid", "pass"); // имя и пароль точки доступа
2. Подключение к роутеру, режим STA:
Serial.begin(115200);  // открываем порт
WiFi.mode(WIFI_STA); // настройка режима вифи. Тут необязательно
WiFi.begin("ssid", "pass"); // ssid и пароль от роутера
while(WiFi.status() != WL_CONNECTED) { // если не подключились, пишем в порт .
delay(500);
Serial.print(".");
}
Serial.println(WiFi.localIP()); // вывод айпи адреса
П. С. Скоро будет интересный урок про вифи!
П. П. С. Т.к. я выздоровел, мне надо ходить в школу, и уроки тут будут выходить реже

#вифи
#espшки
#уроки
2
server.ino
5.4 KB
А вот и сервер на есп. Здесь подробно объяснять не буду, в прошивке есть комментарии. Потом напишу как делать html, но если посмотреть, наверное можно продолжить по аналогии. Схема простая. Диод подключается к D4, SDA дисплея к D2, SCL к D1. До этого была кнопка, но она себя нестабильно ведёт. Поэтому вместо неё останется просто для примера отправка 1

А теперь как этим пользоваться.
1. Сначала надо включить монитор порта и поменять скорость с 9600 на 115200
2. Потом надо перезагрузить вемос. На экране будут точки, а потом появится айпи адрес
3. Его надо вбить в браузер
4. Должен появиться интерфейс
5. Всё. Можно управлять диодом и дисплеем

#уроки
#вифи
#espшки
👍1
А сейчас вы узнаете, что такое гайверхаб и как им пользоваться.
Иногда бывает надо управлять железками удалённо, но заморачиваться с самостоятельной реализацией не хочется. Или просто надо управлять чем-то из интернета. Для этого Гайвер сделал гайверхаб.

1. Структура программы
В сетупе подключается вифи, настраивается mqtt, запускается хаб и подключается билдер:
hub.mqtt.config("test.mosquitto.org", 1883);
hub.onBuild(build);
hub.begin();
2. Билдер
В нём настраиваютя компоненты и записываются значения в переменные. Билдер обычно делают перед сетупом
void build(gh::Builder& b) {
GH_ROW(b, 1,
b.Button().size(2);
b.Button(););
}
3. Компоненты
b.Название(параметры);
Ещё параметры можно задавать в цепочку, как в прошлом пункте
.size(x) — размер виджета в долях
.label(s) — подпись к виджету
.color(c) — цвет
.attach(&flg) — подключить флаг
.attach(func) — подключить функцию

Все виджеты описывать не буду, есть документация

4. Установка
Надо зайти на гитхаб, тыкнуть на old, переключить. на dev, потом code и download zip. Скачается архив с библиотекой. Потом надо зайти в скетч->подключить библиотеку->добавить .zip библиотеку, выбрать файл гайверхаба и подождать.
Ещё надо установить другие библиотеки, всё подробно расписано там.

5. Документация
https://github.com/GyverLibs/GyverHub/wiki
Там написано как пользоваться гайверхабом. Хоть там и про старую версию, но некоторые вещи пересекаются. А вообще рекомендую посмотреть примеры

Это далеко не всё, так что будет ещё один хэштег #гайверхаб
П. С. Чё-то в последнее время я на процессинге много кодить стал, так что предлагайте идеи, что на нём можно сделать (процессинг — это как ардуино, но на компьютере)
П. П. С. Гайверхаб работает не только с еспшками, но это уже совсем другая история
П. П. П. С. Спойлер: возможно скоро будет автополив и машинка на управлении по вифи

#уроки
#вифи
#espшки
#библиотеки
👍43
А сейчас вы узнаете как использовать 2 ядра есп32 одновременно и зачем это + как прошить еспшку, если она не шьётся.
1. Иногда проект получается сложный криво работает. Возможно это из-за того, что не хватает частоты процессора. Поэтому отваливается вайфай и всё работает медленно. В таком случае можно использовать оба ядра (у есп32 их 2). Делается это так:
#define LED1 22 // пин диода
#include "soc/timer_group_reg.h" // так надо
#include "soc/timer_group_struct.h"
TaskHandle_t Task0; // задача
void setup() {
//pinMode(LED1, OUTPUT);
Serial.begin(115200); // вкл юарт
Serial.println(); // новая строка
// функция имя стёк* ? ? задача ядро
xTaskCreatePinnedToCore(core0, "Task0", 10000, NULL, 1, &Task0, 0); // подкл. задачу
// * - но это не точно
}
void loop() {
static uint32_t tmr = millis(); // таймер на миллисе
if (millis() - tmr >= 1000) {
tmr = millis();
Serial.println(millis() / 1000); // вывести время в секундах с запуска
}
}
// функция
void core0(void *p) {
pinMode(LED1, OUTPUT); // пин диода на выход
static bool flag; // флаг состояния
static uint32_t tmr2; // для таймера на миллисе
for (;;) { // вечно крутиться
if (millis() - tmr2 >= 500) { // таймер на миллисе
tmr2 = millis();
digitalWrite(LED1, flag = !flag); // мигать
}
// так надо. Чтоб ошибок не было
TIMERG0.wdt_wprotect = TIMG_WDT_WKEY_VALUE; // write enable
TIMERG0.wdt_feed = 1; // feed dog
TIMERG0.wdt_wprotect = 0; // write protect
}
}
Кстати всё изначально запускается на 1 ядре (втором. Нумерация с 0)

2. Еспшка может не прошиваться по нескольким причинам. Не тот юсб порт, нет драйверов, плохой кабель, проблемы с памятью и др.
Первые три пункта уже объяснялись на канале. А вот с памятью всё сложнее. Надо выбрать порт, открыть монитор порта, поставить скорость 115200 и нажать ресет на еспшке. В порт пришлётся много информации. Надо найти что-то типа 1)DIO/QIO/DOUT и 2)80MHz/40MHz. Потом зайти в инструменты, в flash mode поставить из 1), а в flash frequency из 2). И ещё. Чтобы прошить еспшку, надо зажать кнопку boot и кликнуть по reset. Потом можно прошивать

#espшки
#вифи
#ардуиноиде
#уроки
7
А сейчас вы узнаете, как собрать поливатор и настроить под есп8266.
1. Сначала я думал написать всю инструкцию сюда, но вроде всё описано там: https://github.com/Yura4213/polivator. Если непонятно — пишите в комментарии, объясню. Ещё потом ожидается добавление этого в проекты гайверхаба.
2. Для есп8266 надо настроить другие ноги! В прошивке это выглядит так:
#define PIN_OUT 22 // 2
#define PIN_IN 34 // A0
#define _BTN 17 // 14
надо заменить на
#define PIN_OUT 2 // 2
#define PIN_IN A0 // A0
#define _BTN 14 // 14
Внимание: если не компилируется на есп8266, надо обновить все библиотеки!

#поделки
#гайверхаб
#espшки
#вифи

П. С. А теперь я переделываю лампу
3👍2
ledwemos4_0.zip
441.1 KB
А вот переделанная прошивка лампы. Управление (настройка вифи) как в поливаторе. Добавил возможность скрыть настройки эффекта + случайная генерация пароля.
При первом запуске еспшка создаст точку доступа. Надо подключиться и всё настроить (ssid и пароль от роутера, эффекты, кол-во диодов и др). После перезагрузки еспшки она попытается подключиться к роутеру. Потом уже из гайверхаба можно управлять еспшкой (в том числе опять настроить).

П.С. Теперь будет урок про адресные ленты

#поделки
#espшки
#вифи
#адреска
7👍2