История изменений
Исправление futurama, (текущая версия) :
esphome удобная штука, она хоть и заточена для работы homeassistant, но можно и без него и без wifi
Не знаю о каком ide говорил товарищ выше, но это консольная вещь основанная на platformio
vim myesp1.yaml
esphome compile myesp1.yaml
esphome upload myesp1.yaml
Когда-то делал цифровое упр. блоком питания. Измерение через ina226, display 16x2, rotary encoder, 2 ЦАП – установка напряжения и тока.
substitutions:
devicename: power-supply
esphome:
name: $devicename
platform: ESP32
board: esp-wrover-kit
on_boot:
priority: -100
then:
- lambda: |-
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
globals:
- id: volt_set_int
type: uint8_t
restore_value: yes
initial_value: '49'
- id: curr_set_int
type: uint8_t
restore_value: yes
initial_value: '128'
- id: mode_int
type: uint8_t
restore_value: no
initial_value: '0' # 0 normal; 1 set U; 2 set I
logger:
level: INFO
# level: DEBUG
display:
- platform: lcd_gpio
dimensions: 16x2
data_pins:
- 27
- 14
- 32
- 33
enable_pin: 12
rs_pin: 13
update_interval: 1s
lambda: |-
if (id(mode_int)) {
it.printf(0, 0, "U:%03d", id(volt_set_int));
it.printf(0, 1, "I=%03d", id(curr_set_int));
} else {
it.printf(0, 0, "U=%03d", id(volt_set_int));
it.printf(0, 1, "I:%03d", id(curr_set_int));
}
it.printf(8, 0, "U:%06.3f", id(ina226_bus_voltage).state - id(ina226_shunt_voltage).state);
it.printf(8, 1, "I:%06.3f", id(ina226_current).state);
sensor:
- platform: rotary_encoder
id: "rotary_enc"
pin_a: 19
pin_b: 18
on_clockwise:
then:
- lambda: |-
if (id(mode_int)) {
if (id(curr_set_int)<255) id(curr_set_int)+=1;
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
} else {
if (id(volt_set_int)<255) id(volt_set_int)+=1;
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
}
on_anticlockwise:
then:
- lambda: |-
if (id(mode_int)) {
if (id(curr_set_int)>0) id(curr_set_int)-=1;
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
} else {
if (id(volt_set_int)>0) id(volt_set_int)-=1;
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
}
- platform: ina226
address: 0x40
shunt_resistance: 0.025 ohm
#shunt_resistance: 0.029 ohm
update_interval: 1s
current:
id: "ina226_current"
bus_voltage:
id: "ina226_bus_voltage"
shunt_voltage:
id: "ina226_shunt_voltage"
binary_sensor:
- platform: gpio
pin:
number: 5
mode:
input: true
pullup: true
inverted: true
id: "rotary_switch"
on_click:
min_length: 50ms
max_length: 350ms
then:
- globals.set:
id: mode_int
value: !lambda 'if (id(mode_int) == 0) return 1; else return 0;'
output:
- platform: esp32_dac
pin: 25
id: volt_output
- platform: esp32_dac
pin: 26
id: curr_output
i2c:
sda: 21
scl: 22
scan: true
id: bus_a
Исправление futurama, :
esphome удобная штука, она хоть и заточена для работы homeassistant, но можно и без него и без wifi
Не знаю о каком ide говорил товарищ выше, но это консольная вещь основанная на platformio
vim myesp1.yaml
esphome compile myesp1.yaml
esphome upload myesp1.yaml
substitutions:
devicename: power-supply
esphome:
name: $devicename
platform: ESP32
board: esp-wrover-kit
on_boot:
priority: -100
then:
- lambda: |-
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
globals:
- id: volt_set_int
type: uint8_t
restore_value: yes
initial_value: '49'
- id: curr_set_int
type: uint8_t
restore_value: yes
initial_value: '128'
- id: mode_int
type: uint8_t
restore_value: no
initial_value: '0' # 0 normal; 1 set U; 2 set I
logger:
level: INFO
# level: DEBUG
display:
- platform: lcd_gpio
dimensions: 16x2
data_pins:
- 27
- 14
- 32
- 33
enable_pin: 12
rs_pin: 13
update_interval: 1s
lambda: |-
if (id(mode_int)) {
it.printf(0, 0, "U:%03d", id(volt_set_int));
it.printf(0, 1, "I=%03d", id(curr_set_int));
} else {
it.printf(0, 0, "U=%03d", id(volt_set_int));
it.printf(0, 1, "I:%03d", id(curr_set_int));
}
it.printf(8, 0, "U:%06.3f", id(ina226_bus_voltage).state - id(ina226_shunt_voltage).state);
it.printf(8, 1, "I:%06.3f", id(ina226_current).state);
sensor:
- platform: rotary_encoder
id: "rotary_enc"
pin_a: 19
pin_b: 18
on_clockwise:
then:
- lambda: |-
if (id(mode_int)) {
if (id(curr_set_int)<255) id(curr_set_int)+=1;
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
} else {
if (id(volt_set_int)<255) id(volt_set_int)+=1;
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
}
on_anticlockwise:
then:
- lambda: |-
if (id(mode_int)) {
if (id(curr_set_int)>0) id(curr_set_int)-=1;
id(curr_output).set_level((float)(id(curr_set_int)/255.0));
} else {
if (id(volt_set_int)>0) id(volt_set_int)-=1;
id(volt_output).set_level((float)(id(volt_set_int)/255.0));
}
- platform: ina226
address: 0x40
shunt_resistance: 0.025 ohm
#shunt_resistance: 0.029 ohm
update_interval: 1s
current:
id: "ina226_current"
bus_voltage:
id: "ina226_bus_voltage"
shunt_voltage:
id: "ina226_shunt_voltage"
binary_sensor:
- platform: gpio
pin:
number: 5
mode:
input: true
pullup: true
inverted: true
id: "rotary_switch"
on_click:
min_length: 50ms
max_length: 350ms
then:
- globals.set:
id: mode_int
value: !lambda 'if (id(mode_int) == 0) return 1; else return 0;'
output:
- platform: esp32_dac
pin: 25
id: volt_output
- platform: esp32_dac
pin: 26
id: curr_output
i2c:
sda: 21
scl: 22
scan: true
id: bus_a
Исходная версия futurama, :
esphome удобная штука, она хоть и заточена для работы homeassistant, но можно и без него и без wifi
Не знаю о каком ide говорил товарищ выше, но это консольная вещь основанная на platformio
vim myesp1.yaml
esphome compile myesp1.yaml
esphome upload myesp1.yaml