#1 Re: Програмування Arduino » Сигнал для керування з датчика хола » 2023-01-27 00:45:28

Напишіть, на якій ардуіні хочете, скільки зубців на диску і який саме у вас датчик Хола.

#3 Re: Проекты » Мониторинг АКБ » 2023-01-11 19:44:27

Можу запропонувати рішення на основі USB-пристрою + пакета Network UPS Tools, робочу версію схожого проекту можна завантажити і перевірити тут: https://forum.arduino.ua/viewtopic.php?id=2826
Для Вас можу зробити на платі Arduino MH-Tiny, в неї є 8 аналогових входів, які можна довільно розподілити для вимірювання напруг і струмів.

#4 Re: Програмування Arduino » MOV A,Rn mcs-51 i8051 » 2023-01-08 18:38:29

Для MOV A, Rn (де Rn один з регістрів R0, R1,... R7 тобто n одне з чисел 0,1,...7) код операції 11101rrr (де rrr це двійкове представлення числа n: R0 -> n=0 -> rrr=000, R1 -> n=1 -> rrr=001,... R7 -> n=7 -> rrr=111).
Для ADD A,@Ri (де Ri може бути лише R0 або R1 тобто i одне з чисел 0 або 1) код операції 0010011i (де i це двійкове представлення числа i, яке в даному випадку відповідає самому собі: R0 -> i=0, R1 -> i=1).
Без символьного закінчення може бути операція без участі регістрів, або коли в ній допустимий лише один єдиний регістр, наприклад R0.

#5 Re: Проекты » Робимо розумною систему резервного живлення » 2023-01-01 14:55:28

Kirill2022 пише:

А плата ХІД УПС потрібна щоб НАС думав що він до УПС підключений і треба знати коли пропадає 220В щоб його вимкнути та він не саджав батарею, бо на ній роутер ще висить.

Єдиний варіант дізнатися - випробувати. Я реалізував випадкову модель UPSа з тих, які підтримує NUT. Які UPSи підтримує Ваш NAS - невідомо, якщо співпаде, матимете безкоштовне готове рішення. Якщо ні - можу реалізувати іншу модель UPSа за Вашим замовленням.

rain пише:

Спасибо за проект. А исходники будут выложены?

Ні, не будуть. Можу реалізувати всі ті побажання, які Ви виклали в листі. Насправді можна дуже багато чого реалізувати, для деяких речей є підтримка в NUT, для інших і її можна доробити. Ось деякі:
* повне вимкнення навантаження після заданого з хоста таймаута (в NUT підтримується);
* робота з зарядним пристроєм від мережі 220, фактично це online-ups (в NUT повна підтримка);
* робота з зарядним пристроєм з прив'язкою до часу доби (в NUT додати кілька нових параметрів);
* робота з кількома акумуляторними батареями (в NUT лише з однією, але можна розширити);
* робота з сонячними панелями (в NUT такого нема взагалі, зробити можна, але вже виходить за межі філософії NUT).
Звичайно, в серйозних проектах не буде використовуватись USBasp з mega8a)

#6 Re: Проекты » Робимо розумною систему резервного живлення » 2022-12-29 20:38:05

rain пише:

like!
А на отсутствие PZEM'а не будет ругаться? На случай, если высоковольтная часть не планируется.

Так, буде працювати і без PZEM.

#7 Проекты » Робимо розумною систему резервного живлення » 2022-12-29 18:21:14

Honey
відповідей: 10

Пропоную вдосконалення для популярної на сьгоднішній день схеми резервного живлення:
ups.jpg
Прошивку в форматі hex можна скачати звідси.
Для роботи з цим USB-пристроєм знадобиться пакет Network UPS Tools (про настройку і команди буде нижче).

В якості "ардуіни" я використав програматор USBasp, це зручна платка для розробки різних USB-пристроїв, на ній вже розпаяна обв'язка для USB, виведено кілька GPIO, один ADC і один апаратний UART і SPI. У мікроконтролера ATmega8A нема апаратного USB, тому використовується програмна емуляція за допомогою бібліотеки VUSB. До UART підключена плата PZEM-004T, яка працює по протоколу ModBus. Ще знадобиться два резистори зі співвідношенням опорів 1:5 для подільника напруги, краще взяти великі номінали, щоб менше садити батарею. Для прошивки USBasp можна використати іншу USBasp, або заздалегідь прошити бутлоадер.

Після підключення пристрій представляється якимось UPS-ом:

# dmesg
usb 2-1: new low-speed USB device number 91 using uhci_hcd
usb 2-1: New USB device found, idVendor=047c, idProduct=ffff
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: PZEM-004T
usb 2-1: Manufacturer: arduino.ua
usb 2-1: SerialNumber: 0001
# lsusb
Bus 002 Device 091: ID 047c:ffff Dell Computer Corp. UPS Tower 500W LV

Для настройки NUT треба змінити наступні файли:

# cat etc/nut.conf
MODE=standalone
# cat etc/ups.conf
[pzem]
  driver = usbhid-ups
  port = auto
# cat etc/upsd.conf
LISTEN 127.0.0.1 3493
# cat etc/upsd.users 
[admin]
 password = 123
 actions = SET
 upsmon primary
# cat etc/upsmon.conf
MONITOR pzem 1 admin 123 primary
SHUTDOWNCMD "/usr/sbin/pm-hibernate"

Якщо все правильно настроєно і запущено, то можемо отримати такий результат:

# upsc pzem
battery.charge.low: 1180
battery.voltage: 12.32
device.mfr: arduino.ua
device.model: PZEM-004T
device.serial: 0001
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: MGE HID 1.46
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.20 (API: 0x1000104)
outlet.current: 0.00
outlet.powerfactor: 0.00
outlet.realpower: 0
output.frequency: 49.9
output.voltage: 235.6
ups.mfr: arduino.ua
ups.model: PZEM-004T
ups.productid: ffff
ups.serial: 0001
ups.status: OB
ups.vendorid: 047c

Дані output.*,outlet.* пристрій отримує безпосередньо від PZEM-004T, дані battery.voltage від АЦП, а battery.charge.low - це параметр в пам'яті USB-пристрою, який ми можемо змінювати.

Для зміни параметру використовується команда:

# upsrw -s battery.charge.low=1190 pzem
Username (honey): admin
Password: 123
OK

Для перегляду лише одного параметру можна використати:

# upsc pzem battery.charge.low
1190

Що це за параметр? Число 1190 відповідає напрузі 11.90В, з якою мікроконтролер постійно порівнює напругу акумулятора (battery.voltage), і якщо вона виявиться рівною або нижчою за вказаний поріг, то на виході /BATLOW з'явиться низький рівень (додатково для наглядності ще загориться світлодіод на платі). Тобто низький рівень на цьому виході означає "низька напруга батареї".

Кнопка "Shutdown" надсилає до NUT сигнал, який примушує NUT виконати команду, вказану в SHUTDOWNCMD (в даному прикладі - перейти в гібернацію).

А чи можна використовувати пристрій без встановленого пакету NUT? Так, можна. А як же змінити параметр battery.charge.low ? Записом в перші два байти EEPROM. Кнопка Shutdown не буде працювати? Ні, вона обробляється лише в NUT, але є "план Б".

На схемі ще є дві кнопки "Sleep" і "PwrDown", які генерують натискання відповідних кнопок на ПК, в який підключений USB-пристрій. Наприклад в Windows реакцію на ці кнопки можна призначити в розділі "Параметри"->"Система"->"Живлення і режим сну"->"Додаткові параметри живлення"->"Дія кнопки живлення", наприклад, для "PwrDown" можна призначити "Гібернацію".

Ви вже здогадалися, що вихід /BATLOW можна з'єднувати перемичкою або джампером з одним із входів для кнопок "Shutdown", "Sleep" або "PwrDown" ?

#8 Re: Програмування Arduino » Генерация треугольного сигнала в коде. » 2022-12-23 21:23:14

З поста #3 я це так зрозумів:

loop {
  signal1 = (signal1 + 1) % 1024; // virtual
  signal2 = alalogRead(A0); // real
  digitalWrite(13, signal1 > signal2 ? HIGH : LOW);
}

#10 Re: Проекты » Пропоную співпрацю по декільком проектам » 2022-12-01 18:56:20

renoshnik пише:

Пост ни о чем ...

Пост очень даже содержательный, вот расшифровка:

Есть куча кода от предыдущего программиста, код изначально работал. Пытались сами вносить изменения, но с каждым разом код работает все более и более нестабильно.
Нужен человек с кучей свободного времени, готовый сопровождать код за обещания заплатить, готовы кормить "завтраками" на долговременной основе.

#11 Re: Апаратні питання » Проблемы Arduino nano и Bluetooth JDY-31 » 2022-11-13 11:45:19

Это не косяк нано. У Вас в UART получается два передатчика (ch340 и блютус) и один приемник (нано). У каждого передатчика выход push-pull, резистором мы значительно ослабляем влияние одного из них, делая второй приоритетнее, это можно считать как хак. Резисторы по 1к в нано не для этого, а чтобы если программист переключит пин nano.RX на выход, то не пошел большой ток и не спалил пин.

#12 Re: Апаратні питання » Проблемы Arduino nano и Bluetooth JDY-31 » 2022-11-12 21:48:09

Попробуйте тот резистор, который между ch340.TX и Arduino.RX поменять например на 10к

UPD: посмотрел схему нано, придется еще выпаять LED-RX.

А не проще купить pro mini и отдельный usb-uart ?

#14 Re: Апаратні питання » Помогите разобраться (запитать роутер от павербанка) » 2022-11-07 23:31:46

При использовании преобразователей напряжения руководствуйтесь таким соотношением:
Vin * Iin * КПД = Vout * Iout
Возможно павербанк или зарядка не обеспечивают необходимый Iin.

#16 Re: Апаратні питання » IR датчик наближеня, чому з пультом ДУ працює на більш дальню відстань » 2022-11-01 00:11:57

Порівняйте візуально світло (яскравість, діаграму направленості) від обох світлодіодів. Підказка: камера фотоапарата/телефона "бачить" інфрачервоне світло.

#17 Re: Програмування Arduino » 3d cube » 2022-10-17 15:16:22

perspective4.png
Якщо коротко: Вам треба записати рівняння променя зору в координатах x,y,z і рівняння площини екрану, розв'язавши систему цих двох рівнянь, отримаєте координати точки на екрані.

#18 Re: Проекты » Ищу исполнителя, умная теплица » 2022-10-17 13:12:43

Если все это находится не в радиусе 2-3 метров, то вам понадобится какая-то дальнодействующая шина передачи данных. Рекомендую готовое устройство (картинка кликабельна, там описание):
large_AOC824-2.jpg
Такие устройства в вашем случе смогут управлять реле (вентиляторы, полив, свет, окна). Они работают по тому же протоколу 1-wire, что и самые популярные датчики температуры DS18B20, что в вашем случае удешевит кабельные затраты. Дальность 1-wire до 300м (лично проверено).

На PC или Raspberry под Linux можно сделать единый web-интерфейс для управления всей теплицей. Или (в бюджетном варианте) управлять каждым устройством отдельно через вот такой уже готовый web-интерфейс:
control.png
Можно также управлять из командной строки, и, соответственно, сможете даже сами писать управляющие сценарии на bash, python...

Есть пример подключения датчика BME680 (температура, влажность, давление, качество воздуха):
BME680_Meteo.jpg

Обращайтесть на емейл, готов поучаствовать.

#19 Re: Проекты » Ищу разработчика ( необходим готовый вариант) » 2022-10-15 14:19:25

Делал реализацию SNMP протокола с использованием эзернет адаптера ECN28J60. Если подходит, обращайтесь на емейл, сделаю.

#20 Re: Апаратні питання » Arduino as ISP (Invalid device signature) » 2022-09-16 00:46:31

Загляньте в код ArduinoISP, на каком пине у него RST. Откуда брали ArduinoISP? Я как-то скачал этот скетч неизвестно откуда под свою переделку, работало, но что-то как-то не так. Взял из Arduino IDE в examples/11.ArduinoISP/ArduinoISP - работает четко.
Гляньте https://forum.arduino.ua/viewtopic.php?id=2741#p35282 там инструкция как шить в Arduino IDE (там более сложное подключение, думаю, разберетесь, что нужно, а что лишнее)

#22 Re: Апаратні питання » Arduino Nano+sim800l+Email+SD » 2022-09-05 20:55:49

https://uk.wikipedia.org/wiki/Base64
https://www.arduinolibraries.info/libraries/base64

#23 Re: Апаратні питання » Arduino Nano+sim800l+Email+SD » 2022-08-31 15:27:26

Приблизно якось так

int8_t sim800l_cmd(char *cmd, char *ok_res, int timeout) {
  String res = "";
  sim800l.println(cmd);
  uint64_t start = millis();
  while (millis() - start < timeout) {
    if (sim800l.available() > 0)
      res += sim800l.readString();
    if (res.indexOf(ok_res) >= 0)
      return 0;
    if (res.indexOf("ERROR") >= 0)
      return -1;
  }
  return -2;
}
if (sim800l_cmd("AT+SMTPSEND", "OK", 5000))
  Serial.println("error or timeout");

#24 Re: Апаратні питання » Arduino Nano+sim800l+Email+SD » 2022-08-31 12:23:58

Додайте рядок
sim800l.println("\"");
перед
sim800l.println("AT+SMTPFT=0");

#25 Re: Програмування Arduino » CAN bus mcp2515 прием передача без пауз » 2022-08-29 09:00:39

Зробіть не запит-відповідь індивідуально для кожного пристрою, а відправку всіх запитів одразу, а потім по надходженню відповідей обробляйте їх на протязі лімітованого проміжку часу.

Підвал форуму