S
PT-506 например
а какое там напряжение питания у него, принцип какой, меняется сопротивление?
Aleks
12 вольт на +, на минус шунт, шунт на землю, есп аналог на шунт. Для 50 Ом будет напряжение 0.2-1 В
Aleks
Он от напряжения питания откусывает 5В для пропитания, на остальных вольтах создает ток от 4 до 20 мА в зависимости от давления. При последовательном подключении этот ток на резисторе создает напряжение, которое читается аналоговым входом.
Aleks
Токовая петля 4-20 Это стандарт для давления жидкостей.
Vladimir
https://sl.aliexpress.ru/p?key=OsmsGoY
Aleks
https://sl.aliexpress.ru/p?key=OsmsGoY
Для калибровки в 0.2% штука думаю полезная будет. Но если точность нужна плюс-минус насрать, то с резистором можно начать
Михаил(Kotaro)
Ребят подскажите пожалуйста, h файлы как правило пишутся в ручную или есть какие то проверенные инструменты? Я пользуюсь Visual Studio Code и Platform IO Предпринял попытку сделать автогенерацию как предложил GPT, но не получил никакой реакции, Вот какие плагены установлены для работы с C и C++ все остальное стоит по работе Гуглил инет там прям как то очень много вариантов, кто то сам пишет, кто то через питон скриптом, cmake и еще разные методы, мне как человеку который 2й день тыкает в C++ очень сложно и не понятно это все 😁
Михаил(Kotaro)
индзэец
.h файлы сам пиши
Михаил(Kotaro)
.h файлы сам пиши
Принял, если не сложно можете подсказать на сколько такой код корректен при разбитии. Я пока читал вроде так рекомендуют делать, но в руководстве по которому иду прям мало по этому инфы #ifndef GPSPOSITION_H #define GPSPOSITION_H #include <Arduino> class GpsPosition { public: double lat; double lng; GpsPosition(); GpsPosition(double lat, double lng); void printPosition(); void updatePosition(double lat, double lng); }; #endif // GPSPOSITION_H #include "GpsPosition.h" GpsPosition::GpsPosition() : lat(0.0), lng(0.0) {} GpsPosition::GpsPosition(double lat, double lng) : lat(lat), lng(lng) {} // Метод для вывода позиции void GpsPosition::printPosition() { printf("Lat: %.6f, Lng: %.6f \n", this->lat, this->lng); } // Метод для обновления позиции void GpsPosition::updatePosition(double lat, double lng) { this->lat = lat; this->lng = lng; }
ok-home
https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/wiring_shift.c#L40 кстати, совершенно официально "бит-банг"
нашел картинку, вторая сверху это gpio1/0/1/0, последние 4 это подкачка флэша. Так что если стабильность частоты шифта не нужна, можно и софтовый, иначе .... ну как то так )
Anton
Да это понятно...
Михаил(Kotaro)
Спасибо большое за помощь, очень помогли, теперь знаю куда смотреть
Ivan
Всем привет. Кто нибудь пробовал работать с SIM7600 или другими модемами через i2c?
Vladimir
Пробовал ее, с ней тоже не регулируется. dimmable_light.h выше посоветовали.
У меня оказывается в какой-то момент симистор на модуле пробился.
ㅤ
Привет! Они же вроде только по Serial работают?
Там и SPI, I2C, SDIO есть. Дохера всего
Vladimir
Там и SPI, I2C, SDIO есть. Дохера всего
А чем Serial не устраивает? под него есть хорошая библиотека.
Ivan
Там и SPI, I2C, SDIO есть. Дохера всего
Вот и я про то-же. Но примеров я не нашел. Возможно, что это там только в режиме мастера i2c работает. В документации не нашел. Мне нужно именно через i2c подключить к системе. Нет у меня там свободных проводов. Может можно через i2c Serial как-то пробросить
Ivan
А какой контроллер у тебя?
S3. Но устройство готовое. Надо сделать как модуль расширения. а там только I2C GPS подключил. Надо теперь GSM
Ivan
Так там три аппаратных юарта. Ты их все занял?
Нет. Повторюсь. Есть готовое устройство. У него есть шина расширения. в ней только I2C. Что-то еще туда запихнуть не получится
Ivan
Да. видимо только как мастер может работать
ㅤ
Там же написано
ㅤ
“AT+CRIIC and AT+CWIIC” AT commands could be used to read/write register values of theI2Cperipheral devices Что этими командами можно дергать слейвы
Sam
По поводу лисапеда. Есть такой. RGB светодиоды :)
ㅤ
Ибо я слабо представляю работу с модемом на I2C интерфейсе...
Ivan
Ну судя по доке я понял что это мастер
Угу. Вот и вопрос - Как через I2C прокинуть Serial+PPP?
ㅤ
Угу. Вот и вопрос - Как через I2C прокинуть Serial+PPP?
Я видел i2c serial конвертеры. Но это колхоз какой-то на мой взгляд
ㅤ
Все мы вышли из народа (колхоза) 😁
Ну присри промежуточный контроллер. ch32v003 например.
ㅤ
Но это хрень какая-то. Как ты поток собрался гонять? поллить в цикле i2c ?и запрашивать последний буфер?
Ivan
Но это хрень какая-то. Как ты поток собрался гонять? поллить в цикле i2c ?и запрашивать последний буфер?
Вот не предусмотрели, 3 года назад, что будем теперь модем пихать. Теперь мучаюсь. Ну есть там пин прерывания. Можно его дергать при наличии данных в буфере. А туда через I2c.
ㅤ
Либо MAX3107 кажется
Ivan
Слушай ну возьми ch32v003. Я на нем делал слейвы i2c. Работы на пол дня юарт завернуть
Да так и сделаю, просто вдруг кто-то делал. Может поделится чем ;) Я ленивый.
ㅤ
Раз ленивый
ok-home
Да. Порты на PCF8574
и никаких больше ног наружу ?
Ivan
https://aliexpress.ru/item/32807821217.html 300 рублей на алике
Во! Спасибо. 👍 Уже проще. Не с нуля всё делать. И промакетировать можно перед разработкой платы.
ㅤ
и никаких больше ног наружу ?
Мы по второму кргуу пойдем? Я уже спросил
ㅤ
Во! Спасибо. 👍 Уже проще. Не с нуля всё делать. И промакетировать можно перед разработкой платы.
Так если ты будешь разрабатывать плату так воспользуйся штатными юартами есп
Ivan
и никаких больше ног наружу ?
i2c, 1wire и питание. Больше ничего. А! еще нога прерывания
Ivan
Так если ты будешь разрабатывать плату так воспользуйся штатными юартами есп
Там примерно как у Wirenboard. Всё крепится на DIN рейку. Разъем сбоку для модулей расширения. пару лет продавали устройства. Теперь народ хочет GSM модем туда-же, что бы от внешнего роутера избавиться. А то охрана на него повадилась цепляться
Ivan
Охране пароль не давать не пробовали?))) Кстати, погуглил, и, видимо, будешь первопроходцем в этом плане… придется еще учить IP, PPP стэк общаться с ним по I2C
Вот и я погуглил и загрустил. От охраны сейчас уже делаем скрытые точки доступа и порты бумажкой заклеиваем. Но клиент уже закусился.
Aleks
Поделитесь?
#include <Arduino.h> static const uint8_t powerBuf[] = { 100, 100, 100, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 0, 0}; static const uint8_t powerbuff128[] = { 100, 100, 92, 91, 90, 88, 87, 86, 85, 84, 83, 82, 81, 81, 80, 79, 78, 77, 77, 76, 75, 74, 74, 73, 72, 72, 72, 71, 70, 69, 69, 68, 68, 67, 67, 66, 65, 65, 64, 64, 63, 63, 62, 62, 61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 56, 55, 55, 54, 54, 53, 53, 52, 52, 51, 51, 51, 50, 50, 49, 49, 48, 48, 48, 47, 47, 47, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 38, 38, 37, 36, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 20, 19, 18, 17, 16, 14, 13, 12, 0, 0}; #define ZVC 18 #define ACD1 19 #define ACD2 21 #define ACD3 22 #define ACD4 23 #define DIMCOUNT 4 #define OFF HIGH #define ON LOW #define PL 2 // *100us (длинна импульса) uint8_t dimmer_values[] = {0, 0, 0, 0}; uint8_t dimmer_pins[] = {ACD4, ACD3, ACD2, ACD1}; uint16_t master_value = 0; uint16_t limit_value = 0; hw_timer_t *timer = NULL; uint8_t v = 100; static int k = 0; static int max_k = 0; void IRAM_ATTR isr_zc() { max_k = max(max_k, k); k = 0; } static uint64_t t; void IRAM_ATTR onTimerISR() { uint8_t val = OFF; for (uint8_t vi = 0; vi < DIMCOUNT; vi++) { val = OFF; if (dimmer_values[vi] == 0) { val = ON; } else if (dimmer_values[vi] >= 100) { val = OFF; } else if (k > dimmer_values[vi] && k < dimmer_values[vi] + PL) { val = ON; } digitalWrite(dimmer_pins[vi], val); } k++; if (k > 100) k = 0; } void setup() { Serial.begin(115200); pinMode(ZVC, INPUT_PULLUP); attachInterrupt(ZVC, isr_zc, RISING); for (uint8_t vi = 0; vi < DIMCOUNT; vi++) { pinMode(dimmer_pins[vi], OUTPUT); digitalWrite(dimmer_pins[vi], OFF); } timer = timerBegin(0, 250, true); timerAttachInterrupt(timer, &onTimerISR, true); timerAlarmWrite(timer, 30, true); timerAlarmEnable(timer); } void loop() { static int16_t power = 64; static int16_t dir = 1; power += dir; if (power >= sizeof(powerbuff128) / sizeof(powerbuff128[0])) { power = 127; dir = -dir; } if (power <= 0) { dir = -dir; } power %= sizeof(powerbuff128) / sizeof(powerbuff128[0]); for (uint8_t vi = 0; vi < DIMCOUNT; vi++) { dimmer_values[vi] = powerbuff128[power]; Serial.print(dimmer_values[vi]); Serial.print('\t'); } Serial.println(power); Serial.println(max_k); max_k = 0; vTaskDelay(50); }
Aleks
Это как-то слишком просто ;)
а если тебе рассеивателей из pp нарезать ?
Sam
Это как-то слишком просто ;)
Ну так велосипед и есть простое изделие ) 595 регистры сдвиговые. Каждый сигмент каждого цвета сидит на своем выходе регистра (через транзистор конечно). Можно еще енаблю микросхемы шимить тогда еще и яркость будет изменяемая.
ㅤ
Охране пароль не давать не пробовали?))) Кстати, погуглил, и, видимо, будешь первопроходцем в этом плане… придется еще учить IP, PPP стэк общаться с ним по I2C
Да не надо ему никакой стек учить, ему просто надо по прерыванию забирать буффер из конвертера и пихать туда куда надо
ㅤ
А WiFi лучше?
Нет. Вообще радио это плохая идея на мой взгляд. Не очень надежна. Если требуется имено надежность. Если мопед играет роль может быть а может не быть - тогда можно выбрать радио
Ivan
Нет. Вообще радио это плохая идея на мой взгляд. Не очень надежна. Если требуется имено надежность. Если мопед играет роль может быть а может не быть - тогда можно выбрать радио
Полностью согласен. Потому и педалирую i2c. Может поменяем в следующий версии раскладку шины расширения, но пока без вариантов
Vladimir
индукция ж. без снабера нельзя запускать
Полагаю это произошло в момент когда в снабере варистор взорвался.
Aleks
у тебя по фронту или по спаду регулировка была?
ok-home
Хотя... А кто мешает роутер настроить на работу только с 1 клиентом ? А остальных в сад
Vladimir
у тебя по фронту или по спаду регулировка была?
Не знаю, dimmable_light.h использовалась. Нужно в исходниках копаться.
Max
[Перевод] Мониторинг присутствия в реальном времени с помощью датчика миллиметровых волн и макетной платы Beetle C6 Это руководство поможет вам создать систему мониторинга присутствия в реальном времени с помощью датчика миллиметровых волн DFRobot и макетной платы Beetle ESP32 C6. Читать далее https://habr.com/ru/articles/869640/?utm_campaign=869640&utm_source=habrahabr&utm_medium=rss
Tonchik
Хотя... А кто мешает роутер настроить на работу только с 1 клиентом ? А остальных в сад
Фильтр по MAC адресам и пароль, ощущение, что там точка беспарольная совсем.
Ivan
Фильтр по MAC адресам и пароль, ощущение, что там точка беспарольная совсем.
Это тогда выездники умные нужны. Вы где-нибудь таких видели? Тут настройки скрытой точки доступа приходится пошаговой инструкцией с картинками выдавать, а вы "MAC адрес"...