ESP32 ESP8266 БЛОКИ ДЛЯ РАДИО ПЕРЕДАТЧИКА LORA RH_RF95 Блок PID регулятора составлен на базе библиотеки Arduino PID Library - Version 1.1.1 Блок графически отображает уровень сигнала на входе mysignal Блок для DS3231 Sleep Timer - спящий режим и пробуждение по будильнику через прерывание DS3231 Блок для En_AP - включает автоматическое включение точки доступа в случае отсутствия подключения в р Блок для детектирования попадания текущего времени в указанный временной интервал Блок для модуля SIM800L Блок для одна кнопка 3 возможных состояния. 1. Одно нажатие (на выходе 1 Click короткий импульс) 2. Блок для очистка дисплея ардуино flprog Блок для предел. Блок для расчета среднего из заданного количества замеров Блок для снятия показаний с трансформатора переменного тока Блок для сохранение удаление сохраненных параметров сетей ESP-8266 Блок для таймер обратного отсчёта Блок для того чтобы уменьшить влияние помех если выхода некуда не подключен это может негативно влия Блок для установки соединения с программой Virtuino Блок для фазорезка димер ШИМ Блок инициализации приема/передачи четырех байт через интерфейс UART посредством протокола библиотек Блок предназначен для конвертации переменная в виде (HEX) на выходе будет виде (Dec) Блок расчета рассвета Блок служит для создания бегущей строки Блок создаёт и запускает асинхронный сервер возможна интеграция с Materialize Layout Блок №1 для радио модуль 433-315 мГц Блоки для ПИД регулятора Блоки для тензо датчика весы Arduino HX711 Блоки разные (прочее блоки) Бок для телеграмм бота ESP8266 ESP32 Json 5.13.5 и Json 6.х.х Данный блок используется для передачи и приема данных с помощьюТехнология ESP-NOW ESP8266 и ESP32 бе МАТРИЦА 8X8 Передача данных в Excel из arduino РЕГУЛЯТОР НАГРЕВА ТЕРМОСТАТ Этот блок предназначен для работы с программой CANHacker V2.00.01 и работает в связке с модулем MCP2 блок используется для передачи и приема данных с помощью ESP8266 и ESP32 без создания WiFi сети включенных последовательно которая оптимизированна для контроллеров STM32 отсчёт в секундах при которой содержащийся в нём пар достигает состояния насыщения и начинает конденсироваться в росу.
Блок для автомобильного бортового компьютера
Rh — мгновенный расход бензина в литрах в час (когда стоишь с заведённым двигателем). Когда машина едет вместо Rh появляется Ri — мгновенный расход на 100км.
Rm — средний расход в литрах на 100км за минуту. Только при движении.
Rp — количество потраченного бензина в литрах за поездку. Если заглушить и опять завести машину, обнуляется.
S — скорость км/ч. Скорость откалибрована по навигатору под конкретные колёса. При скорости выше 110 км/ч подсветка экрана начинает моргать. Удобно на трассе если семья и семейный бюджет дороже адреналина.
T — пробег в км за последнюю поездку.
t — температура за бортом.
Rzapr и Tzapr — общий расход бензина в литрах и расстояния в километрах. Хранится в энергонезависимых ячейках. Обнуляется маленькой кнопкой если включен второй экран. Удобно контролировать подсчёт потраченного бензина для корректировки. Также можно контролировать АЗС, если заправить полный бак и обнулить. Через пару недель приехать туда же и опять заправить до полного. Сравнить показания на колонке АЗС с Rzapr. У меня были расхождения максимум в 0.3 литра.
Ta — тахометр об/мин

 

Блок предназначен для работы с программой CANHacker V2.00.01 и работает в связке с модулем MCP2515
Подключение модуля: 
SCK - 13 pin arduino
SI - 11 pin arduino
SO - 12 pin arduino
CS - настраивается (по умолчанию 10 pin arduino)
INT - настраивается (по умолчанию 2pin arduino)
Внимание! Библиотека CanHacker.h по умолчанию настроена на частоту кварца в модуле MCP2515 на 16 мГц. Если у вас модуль с частотой 8 мГц. То вам необходимо в библиотеке CanHacker.h в строке 68 найти: CAN_CLOCK canClock = MCP_16MHZ; сделать изменения на такие : CAN_CLOCK canClock = MCP_8MHZ;
Автор блока : aidar_i на форуме flprog
Тестирование и оформление : Eraser19rus на форуме flprog
Блок был создан на основе скетча и библиотек для CANHacker  автор : Dmitry 
Flprog v 6.3.1 . Arduini IDE v 1.8.12 на момент создания

 

 

Блок для Измерение скорости вращения путём измерения интервала между импульсами
Измерение скорости вращения путём измерения интервала между импульсами ( один импульс на оборот). Используется прерывание. 
В отличии от способа с подсчётом количества импульсов за единицу времени, позволяет получить большее разрешение на малой скорости вращения без увеличения разрешения датчика (количества импульсов на оборот). Измерение происходит при изменении входного сигнала с низкого уровня на высокий. Обновление значения происходит с каждым оборотом, в случае остановки вращения значение обнулится через определённое время, которое зависит от минимальной установленной скорости (задаётся в параметрах пользователя).
В параметрах пользователя необходимо указать минимальную измеряемую скорость. От этого зависит, сколько времени после остановки вращения будет сохранятся последнее измеренное значение.

 

Энкодер Pro (EncPro)  V1.4

Энкодер Pro (EncPro)  Энкодер_Pro_V1.5.1
Это универсальный блок с возможностью настройки.
Все настройки интуитивно понятны и  имеют описание и подсказки.
Благодаря отличному алгоритму библиотеки Encoder (https://github.com/PaulStoffregen/Encoder/releases),
которую я поправу считаю лучшей в своем классе, пропуск шагов практически исключен.
В описании библиотеки гарантирована работа на частоте до 100 - 127 кГц.
Если у вас нормальный, не убитый энкодер, имеющий RC фильтры, то при подключении 
сигнальных пинов на пины контроллера, поддерживающие прерывания, качественная работа
блока гарантирована. Если же такой возможности нет, то используйте хотя бы один пин
поддерживающий прерывания. У таких контроллеров как UNO и NANO это D2 и D3.
Счетный выход блока Count выдает результат моментально.
Скорость работы импульсных выходов Up и Down зависит от вашей программы.
Блок физически не может выдавать больше одного импульса за два цикла.
Однако импульсов будет ровно столько, сколько покажет моментальный выход Count,
хотя они могут совершаться с задеожкой.

Блок выдает количество шагов и импульсы для каждого шага.

Автор
Dryundel

 

СОЗДАНИЕ GOOGLE-ТАБЛИЦЫ

Запись данные с ESP8266 в Google-таблицы

Создайте электронную таблицу Google на вашем Google-Диске и назовите её например DataCollector («Сборщик Данных»). Переименуйте текущий (или активный) лист (sheet) на Summary («Общее») и добавьте второй лист, назовите его DataLogger («Регистратор Данных»). Из адресной строки таблицы скопируйте символы, находящиеся между символами «d/» и «/edit» и сохраните их где-нибудь. Это уникальный ключ совместного использования вашей электронной таблицы, который позже понадобится для скрипта на языке Google Apps Script.

 
Внимание! Имя электронной таблицы Google не играет большой роли, так как в скрипте Google Apps Script мы будем использовать ключ совместного использования таблицы, который всегда уникален. В то же время имена листов (Summary и DataLogger) должны совпадать с теми, которые вы используете в скрипте Google Apps Script (об этом написано ниже).
СКРИПТ НА ЯЗЫКЕ GOOGLE APPS SCRIPT
Для создания скрипта Google Apps Script в приложении, Google-Таблицы выберите пункт меню «Apps Script» заходим в вкладку «Apps Script» далее нажимаем на плюс рядом с надписью «Файлы +» выбераем вкладку скрипт. В окне кода вставьте нижеприведённый код. Код или скрипт можно сохранить под любым именем. 

 

Далее входим во вкладку "начать развертывание" далее

 

"Новое развертывание" Веб-приложение Запуск от имени выбираете "свой аккаунт" У кого есть доступ "Все"

  

Далее Идентификатор развертывания вставляем в ссылку адресной строки ---Your-Google-Sheet-ID--Goes-Here---

https://script.google.com/macros/s/---Your-Google-Sheet-ID--Goes-Here---/exec?tag=test&value=-1

// 0) Заходим в Google-Таблицы, Инструменты > Редактор скриптов...
// 1) Вставляем туда этот код
// 2) Сохраняем и именуем уникальным названием
// 3) Задаем в меню способ запуска в режиме "doGet"
// 4) При первом запуске скрипт попросит вас дать ему права на редактирование таблицы
// 5) В главном меню > Развернуть как веб-приложение...
//    Каждый раз, когда заново разворачиваете скрипт, выбирайте последнюю версию
//    Выставляем права: "Me (your email address)"
//    ВАЖНО: выберите "Anyone, even anonymous" в меню "Кто может редактировать этот скрипт"

// Сохраняем опубликованный URL для использования в дальнейшем.
// https://script.google.com/macros/s/---Ваш-Script-ID--здесь---/exec
// https://script.google.com/macros/s/---Ваш-Script-ID--здесь---/exec?tag=test&value=-1

// Эта Функция будет вызвана один раз при первом исполнении
function doGet(e){
  Logger.log("--- doGet ---");

 var tag = "",
     value = "";

  try {

    // Дебаггинг
    if (e == null){e={}; e.parameters = {tag:"test",value:"-1"};}

    tag = e.parameters.tag;
    value = e.parameters.value;

    // Сохраняем данные в таблицу
    save_data(tag, value);

    return ContentService.createTextOutput("Wrote:n  tag: " + tag + "n  value: " + value);

  } catch(error) { 
    Logger.log(error);    
    return ContentService.createTextOutput("oops...." + error.message 
                                            + "n" + new Date() 
                                            + "ntag: " + tag +
                                            + "nvalue: " + value);
  }  
}

// Функция для сохранения данных в таблицу
function save_data(tag, value){
  Logger.log("--- save_data ---"); 

  try {
    var dateTime = new Date();

    // Вставьте URL из Google-таблицы , начиная с https thru /edit
    // Например: https://docs.google.com/..../edit 
    var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/---Ваш-Google-Sheet-ID--Goes-Here---/edit");
    var summarySheet = ss.getSheetByName("Summary");
    var dataLoggerSheet = ss.getSheetByName("DataLogger");

    // Получаем информацию о последней отредактированной строке в таблице
    var row = dataLoggerSheet.getLastRow() + 1;

    // Заполняем данными
    dataLoggerSheet.getRange("A" + row).setValue(row -1); // ID
    dataLoggerSheet.getRange("B" + row).setValue(dateTime); // dateTime
    dataLoggerSheet.getRange("C" + row).setValue(tag); // tag
    dataLoggerSheet.getRange("D" + row).setValue(value); // value

    // Обновляем таблицу summary
    summarySheet.getRange("B1").setValue(dateTime); // Last modified date
    // summarySheet.getRange("B2").setValue(row - 1); // Count 
  }

  catch(error) {
    Logger.log(JSON.stringify(error));
  }

  Logger.log("--- save_data end---"); 
}



Внимание! Имена листов в вышеприведённом скрипте должны совпадать с именами листов электронной таблицы, в которые мы собираемся записывать данные.
1) var summarySheet = ss.getSheetByName("Summary");
2) var dataLoggerSheet = ss.getSheetByName("DataLogger");

Аналогичным образом необходимо изменить в скрипте ключ совместного использования электронной таблицы (изменить строку «—Your-Google-Sheet-ID–Goes-Here—») на ваш (который вы скопировали ранее из адреса электронной таблицы).
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/---Your-Google-Sheet-ID--Goes-Here---/edit");
Это запрос с браузера при переходе по нему в таблицу будут записываться данные в первую таблицу слово test а во вторую значение -1
https://script.google.com/macros/s/–Your Google Script ID–/exec?tag=test&value=-1
Символы между символами «s/» и «/exec?» — это идентификатор вашего скрипта GScriptID.
В процессе публикации Google выдаст запросы на разрешение с вашей стороны, вам необходимо предоставить это разрешение.
Блок для SPIFFS для проигрывания WAV и MP3 файлов
Для проигрывания музыки формата WAV из файловой системы ESP8266 без использования дополнительных плат.
Прошивка ESP8266.
Загрузка файлов в файловую систему ESP8266.
ESP8266FS – это инструмент, интегрируемый в IDE Arduino. Он добавляет новый пункт в меню Инструменты (Tools), который предназначен для загрузки данных скетча в файловую систему ESP8266, находящуюся на flash-памяти.
Загрузите инструмент,  по этой ссылке https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.3.0/ESP8266FS-0.3.0.zip
В папке скетчей IDE Arduino создайте папку «tools», если она еще не создана
Распакуйте скачанный инструмент в папку «tools». В результате путь будет выглядеть примерно так: <дом_папка>/Arduino/tools/ESP8266FS/tool/esp8266fs.jar
Перезапустите IDE Arduino
Откройте скетч скомпилированный из FLProg. Он   находится здесь: C:\Users\User\AppData\Local\Temp\flprog\pr5 - скомпилированный скетч (pr5) из FLProg.
Откройте папку этого скетча. Для этого кликните по Скетч > Показать папку скетча (Sketch > Show Sketch Folder)
Создайте папку «data» и прочие файлы, которые хотите сохранить в файловую систему.
Кликните в IDE Arduino по Инструменты > ESP8266 Sketch Data Upload (Tools > ESP8266 Sketch Data Upload). Это должно начать загрузку файлов в файловую систему ESP8266. Когда загрузка будет завершена, статусная панель IDE Arduino покажет сообщение «SPIFFS Image Uploaded», что значит «образ SPIFFS загружен». Загрузка идет долго.
 
   Папку «data» я создаю так: Кликаю в IDE Arduino по Инструменты > ESP8266 Sketch Data Upload (Tools > ESP8266 Sketch Data Upload) и создается папка , а IDE Arduino пишет ошибку загрузки. В эту папку помещаю файлы МП3. Затем снова кликаю ESP8266 Sketch Data Upload.
Затем загрузите сам скетч как обычно.
Затем загрузите сам скетч как обычно.
Звуковые примеры  https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
Там есть ссылка , как генерировать самому.
Выход звука GND и RX.
Входы:
En_pl - включение блока.
start_pl - запуск проигрывания. Подавать импульсный сигнал.
mp3_file - название MP3 файла, писать обязательно косой чертой впереди (/pno-cs.mp3).
 
Блок для FTP SPIFFS ESP8266
Главный блок ставится первым. Остальные блоки работают вместе с ним.
 Cleaning - при высоком уровне на входе происходит очистка файла от записей.
 Filename - присваиваемое имя файла, впереди имени обязательно косая черточка / (например, /myfile.txt)
Создание файла или открытие существующего для записи.
 Входы:
En_write - Запуск
 Cleaning - при высоком уровне на входе происходит очистка файла от записей.
 Filename - присваиваемое имя файла, впереди имени обязательно косая черточка / (например, /myfile.txt)
 Text_string - текстовая строка
 date - число, по умолчанию int, можете поменять в блоке на другую, например, float.
Параметры:
 - аргумент mode – это строка, указывающая режим доступа.
 Допустимые значения для аргумента mode: r, w, a, r+, w+ и a+. 
Режим «r». Открывает текстовый файл для чтения. Указатель ставится в начало файла.
Режим «r+». Открывает текстовый файл для чтения и записи. Указатель ставится в начало файла.
Режим «w». Усекает файл до нулевого размера или создает текстовый файл для записи. Указатель ставится в начало файла.
Режим «w+». Открывает текстовый файл для записи или чтения. Если файла не существует, он создается. В противном случае он усекается. Указатель ставится в начало файла.
Режим «a». Открывает файл для дополнения (записи в конец файла). Если файла не существует, он создается. Указатель ставится в конец файла.
Режим «a+». Открывает файл для чтения и дополнения (записи в конец файла). Если файл не существует, он создается. При чтении начальная позиция файла – в начале, но дополнение всегда выполняется в конце файла.
Чтение выбранного файла из файовой системы.
filename - название читаемого файла. Впереди названия обязательно должна быть косая черточка / (например, /myfile.txt)
 out_read - выход прочитанных данных с файла
Параметры:
 - аргумент mode – это строка, указывающая режим доступа.
 Допустимые значения для аргумента mode: r, w, a, r+, w+ и a+. 
Режим «r». Открывает текстовый файл для чтения. Указатель ставится в начало файла.
Режим «r+». Открывает текстовый файл для чтения и записи. Указатель ставится в начало файла.
Режим «w». Усекает файл до нулевого размера или создает текстовый файл для записи. Указатель ставится в начало файла.
Режим «w+». Открывает текстовый файл для записи или чтения. Если файла не существует, он создается. В противном случае он усекается. Указатель ставится в начало файла.
Режим «a». Открывает файл для дополнения (записи в конец файла). Если файла не существует, он создается. Указатель ставится в конец файла.
Режим «a+». Открывает файл для чтения и дополнения (записи в конец файла). Если файл не существует, он создается. При чтении начальная позиция файла – в начале, но дополнение всегда выполняется в конце файла.

 

Опрос

Оцените работу сайта

Другие опросы...