Pull to refresh
0
0.2
Николай @nikolz

Пользователь

Send message

В колодце не испытывал.Работал с этими датчиками лишь в помещении. Вот некоторые из них:

Rоманда WeiboAI представила компактную модель с 1.5 миллиарда параметров

Подскажите, что такое "Rоманда"?

Для такой задачи вполне подходит ESP12. Если надо BLE , то лучше взять модули других фирм, например такой:

А почему не взяли бесконтактный метод определения уровня? Например, ультразвуковой датчик (цена 50 руб) и реле для включения насоса(50 руб.).

Это керамическая антенна 4.3DBI .Она припаяна.

Если не нравится керамика, то есть такой вариант с печатной антенной, еще дешевле, но модуль больше по размеру

До кучи...

Если взять вот этот модуль

Вместо взятого в статье, то цена модуля составит не 300-600руб, а 140 руб

Кроме того, этот модуль примерно 3 раза меньше по длине.

Блок питания можно взять , например, такой:

и спрятать его в коробку вместе модулем ESP32, что по размерам как модуль в статье, но без блока питания.

Геркон можно взять такой же, но дешевле:

До кучи...

Возможно знаете, но не увидел упоминание в статье.

10 лет назад пользователь под ником cnlohr сделал аналоговый интерфейс NTSC на ESP8266.

https://github.com/cnlohr/channel3

статья на хабре от 2016 https://habr.com/ru/articles/391857/

2 года назад добавлен интерфейс PAL.

это повтор решения 2 года назад:

https://www.instructables.com/ESP8266-NTSC-Analog-TV-Broadcast-on-Channel-3/

это решение на ESP32 6 лет назад:

https://bitluni.net/esp32-color-pal

-----------------------------

это Библиотека ESP32, которая генерирует композитный видеосигнал для PAL, SECAM и NTSC. 3 года назад.

https://github.com/aquaticus/esp32_composite_video_lib

пример видео на ESP32.

https://www.instructables.com/Hacking-Idea/

Поправьте, "б" -это "бит", а байт - это "Б".

Есть грубое эмпирическое правило (не помню откуда оно взялось), что размер модели в миллиардах параметров примерно соответствует количеству гигабайт оперативной памяти машины, на которой ты хочешь эту модель запустить. То есть модель на 120 миллиардов параметров можно запустить на железе со 128 Гб оперативки.

Число параметров надо умножить на формат параметра.

Если модель имеет 120 миллиардов параметров, то запустить ее на железе со 128 ГБ оперативки возможно при формате FP8.

Для запуска с форматом FP32 (полная точность) требуемый объем оперативки составит 512 ГБ.

Ошибся с числом команд.

На Ардуине аппаратно лишь один I2C.

На ESP32 - два I2C.

Для трех I2C надо использовать программную реализацию I2C для дополнительных к аппаратным каналам.

https://github.com/tremaru/iarduino_I2C_Software

Если используете расширитель, то тоже решаете программно.

------------------------

Дополнительные два пина потребуют добавления одной команды в вашей программе - это команда смены адреса шины SDA. Это самое простое решение и упрощает сборку.

Надо взять два любых свободных пина GPIO.

Тогда используйте еще два пина у микроконтроллера.

Начали смотреть шину I2C-сканером и нашли только один адрес 0х53. Пу пу пу, начали гуглить как задавать адрес этим датчикам. Везде писали про какие-то контакты XSHUT и GPIO1. А у нас таких не было...

простой способ включения трех датчиков с одинаковыми адресами это подключить SDA к отдельным пинам, а SCL - сделать общим. В итоге нет надобности изменять адрес и не нужен расширитель I2C.

Вот датчики с вынесеными контактами GPIO1 и XSHUT. Но нам они не подходят по причине того, что на них не защищен сам лазерный модуль.

Вот защитное стекло для этого датчика:

А это датчик, но уже с защитным стеклом и есть все контакты, которые вы искали.

Вы купили в собственность именно готовое "железо". Документацию на его разработку или производство Вы можете купить, но это другие деньги. Изучать Вам никто не запрещает. просто если сломаете, то ремонт за Ваш счет.

Вы можете установить любое ПО, удалив все установленное. Что Вам дали в пользование и что вы можете добавлять или удалять решает собственник ПО. Ваши права оговорены в лицензии на ПО. Увы, но это реальность.

Ваш смартфон вам не принадлежит. 

На железо у Вас есть право собственности. На софт Вы покупаете лишь право пользования и хранения.

Что скажите про эти библиотеки:

--------------------------------------

Рекомендации DeepSeek :

1. ArduinoJson (самая популярная)

  • Плюсы: Легковесная, простая в использовании, отличная документация

  • Поддерживаемые архитектуры: AVR, ARM, ESP8266, ESP32

  • Особенности: Поддержка как десериализации, так и сериализации

cpp

#include <ArduinoJson.h>

void setup() {
  StaticJsonDocument<200> doc;
  doc["sensor"] = "temperature";
  doc["value"] = 23.5;
  
  serializeJson(doc, Serial);
}

2. jansson (порт для embedded)

  • Плюсы: Полнофункциональная, стандартный API

  • Минусы: Требует больше памяти

  • Лучше подходит для: Более мощных микроконтроллеров (ESP32, STM32)

3. cJSON

  • Плюсы: Минималистичная, переносимая, только C

  • Размер: ~10KB ROM

  • Поддержка: ARM, AVR, ESP

#include "cJSON.h"

cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "test");
cJSON_AddNumberToObject(root, "value", 42);

4. JsonParser

  • Плюсы: Очень легкая, только парсинг

  • Размер: ~2-4KB ROM

  • Лучше для: Только чтения JSON

5. Microjson (минималистичная)

  • Плюсы: Крайне малый размер, только парсинг

  • Размер: ~1.5KB ROM

Рекомендации по выбору:

  • Для AVR/ATmega: ArduinoJson или Microjson

  • Для ESP8266/ESP32: ArduinoJson или cJSON

  • Для STM32: ArduinoJson или jansson

  • Если нужно только парсить: JsonParser или Microjson

ArduinoJson обычно是最好的 выбор для большинства проектов благодаря балансу функциональности и эффективности использования памяти.

=============================

Рекомендации GLM:

Ниже представлен обзор популярных библиотек для работы с JSON на микроконтроллерах с учётом их особенностей и ограничений по ресурсам:

1. ArduinoJson (рекомендуется для Arduino/ESP)

  • Платформы: Arduino, ESP8266, ESP32, STM32 и др.

  • Особенности:

    • Оптимизировано для устройств с ограниченным объёмом памяти (ОЗУ/Флэш).

    • Поддерживает сериализацию (создание

    • Удобный API, интеграция с Arduino IDE

    • Автоматическое управление памятью (статический или динамический пул).

  • Пример:

    #include <ArduinoJson.h>

    void setup() {

    StaticJsonDocument<200> doc; // Выделяем 200 байт

    doc["sensor"] = "temperature";

    doc["value"] = 25.5;

    serializeJson(doc, Serial); // Вывод: {"sensor":"temperature","value":25.5}

    }

  • Ссылка: [arduinojson.org](https://arduino

2. cJSON (лёгкая библиотека на C)

  • Платформы: любые микроконтроллеры (STM32, AVR, ESP32 и др.).

  • Особенности:

    • Минималистичная (один файл: cJSON.c + cJSON.h).

    • Не требует динамической памяти (но может использовать malloc).

    • Поддерживает парсинг и генерацию JSON.

    • Низкое потребление RAM.

  • Пример:

    #include "cJSON.h"

    void parse_json(const char *json) {

    cJSON *root = cJSON_Parse(json);

    cJSON *value = cJSON_GetObjectItem(root, "value");

    printf("Value: %f\n", value->valuedouble);

    cJSON_Delete(root);

    }

  • Ссылка: GitHub — DaveGamble/cJSON

3. JSMN (минималистичный парсер на C)

  • Платформы: устройства с крайне ограниченным объёмом памяти (ATtiny, MSP430).

  • Особенности:

    • Только парсинг (без генерации JSON).

    • Не использует malloc (работает с буфером).

    • Очень маленький размер кода (~1 КБ).

    • Требует ручной обработки токенов.

  • Пример:

    #include "jsmn.h"

    void parse_json(const char *json) {

    jsmn_parser parser;

    jsmntok_t tokens[10];

    jsmn_init(&parser);

    int count = jsmn_parse(&parser, json, strlen(json), tokens, 10);

    // Обработка токенов вручную...

    }

  • Ссылка: GitHub — zserge/jsmn

4. Mongoose OS (сетевая библиотека с поддержкой JSON)

  • Платформы: ESP32, ESP8266, STM32.

  • Особенности:

    • Включает парсер JSON как часть сетевой библиотеки.

    • Поддержка MQTT, HTTP, WebSocket.

    • Требует больше ресурсов, чем cJSON/JSMN.

  • Пример:

    #include "mgos.h"

    void handler(struct mg_connection nc, int ev, void ev_data) {

    struct mg_http_message hm = (struct mg_http_message ) ev_data;

    double value = json_get_double(hm->body, "$.value");

    printf("Value: %f\n", value);

    }

  • Ссылка: cesanta.com/mongoose

5. nlohmann/json (для мощных микроконтроллеров)

  • Платформы: ESP32, STM32H7, Teensy 4.x.

  • Особенности:

    • Современный C++ API (удобный, но ресурсоёмкий).

    • Требуется C++11 и поддержка STL.

    • Не рекомендуется для маломощных микроконтроллеров (из-за высокого потребления оперативной памяти).

  • Пример:

    #include <nlohmann/json.hpp>

    void parse_json(const std::string &json) {

    auto doc = nlohmann::json::parse(json);

    float value = doc["value"];

    Serial.println(value);

    }

  • Ссылка: GitHub — nlohmann/json

6. PicoJSON (лёгкая альтернатива nlohmann)

  • Платформы: ESP32, STM32.

  • Особенности:

    • Компакт

    • Поддерживает парсинг и генерацию.

    • Меньше ресурсов, чем у nlohmann/json

  • Ссылка: [GitHub — kazuho/picojson](GitHub — kazuho/picojson

Рекомендации по выбору:

  1. Для Arduino/ESP: ArduinoJson (идеальное сочетание удобства и ресурсов).

  2. Для маломощных МК (ATtiny, AVR): JSMN (только парсинг) или cJSON.

  3. Для STM32/ESP32 без Arduino: cJSON (C) или PicoJSON (C++).

  4. Для сетевых проектов: Mongoose OS (если нужна интеграция с MQTT/HTTP).

  5. Для мощных микроконтроллеров (ESP32, Teensy 4.x): nlohmann/json (если хватает оперативной памяти).

Все библиотеки, кроме nlohmann/json, подходят для устройств с оперативной памятью от 2 КБ. Для проектов с критичным потреблением памяти выбирайте JSMN или cJSON.

Какую погрешность и минимальный шаг перемещения экспериментально Вы получили?

1
23 ...

Information

Rating
2,728-th
Location
Россия
Registered
Activity