Initial SD card setup:
cmdline.txt
to enable Ethernet-over-USB: modules-load=dwc2,g_ether
ssh
to start SSH server automaticallyInitial server setup:
# apt-get install x11vnc $ x11vnc -storepasswd # echo 'su -l -c "x11vnc -rfbauth /home/pi/.vnc/passwd" pi'
apt-get install vim tmux
When selecting ATmega328 vs ESP8266 based solution, consider that ATmega328 would need 5V sensors, but ESP8266 would need 3-to-5V step-up when controlling LEDs.
ESP8266 has D3 / GPIO0 and D4 / GPIO2 10k pull-up + D8 / GPIO15 10k pull-down resistors, see LOLIN D1 mini description.
Name | Price | CPU | CPU clock | Flash | SRAM / PSRAM | Networking | Power | Interface | PWM | DAC | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|
Arduino Nano v3.0 | €3.60 + €0.92 = €4.52 | ATmega328P | 16Mhz | 32KB | 2KB | ![]() | 5..12V | MiniUSB | ![]() | ![]() | |
LoLin NodeMCU V3 | €1.89 + €0.88 = €2.77 | ESP8266 | 80MHz | 4MB | 64KB | 2.4GHz WiFi 802.11 b/g/n | 3.3..12V (e.g. 3.7V LiIon) | MicroUSB | ![]() | ![]() | |
Wemos D1 mini V1 | €1.76 + €0.66 = €2.42 | ESP8266 | 80MHz | 4MB | 64KB | 2.4GHz WiFi 802.11 b/g/n | 3.3..12V (e.g. 3.7V LiIon) | MicroUSB | ![]() | ![]() | |
Wemos D1 mini Pro V1.1 | €2.67 + €0.65 = €3.32 | ESP8266 | 80MHz | 16MB | 128KB | 2.4GHz WiFi 802.11 b/g/n | 3.3..12V (e.g. 3.7V LiIon) | MicroUSB | ![]() | ![]() | |
Wemos ESP32-S2 Mini | €2.69 | 240MHz | 4MB | 320KB / 2MB | 2.4GHz WiFi 802.11 b/g/n | 5V (USB) | USB-C | ![]() | 2× (GPIO17+18) | ||
ESP32-C3 SuperMini | €2.39 | ESP32C3FN4 | 160MHz | 4MB | 400KB | 2.4GHz WiFi 802.11 b/g/n, Bluetooth 5.0 | 5V (USB) | USB-C | ![]() | 4× | 43µA in deep sleep, 22.5×18 mm |
ESP32-C6 | €12.45 | ESP32C6FH4 | 160MHz | 4MB | 512KB HP + 16KB LP | Wi-Fi 6 (2.4 GHz), Bluetooth 5.0 (LE), Thread (802.15.4) | 5V (USB) | USB-C | ![]() | 7× | 26×18 mm |
Check:
CH341SER.ZIP
).
Challenges:
ESPHome installation:
# docker run --rm --net=host --privileged -v "$(pwd):/config" esphome/esphome
smart_meter.bin
file which should be saved locally: esphome: name: smart_meter friendly_name: "Smart meter" esp8266: board: d1_mini # For complete list check https://registry.platformio.org/platforms/platformio/espressif8266/boards logger: hardware_uart: UART1 # D4 on D1 mini tx_buffer_size: 4096 ota: - platform: esphome password: "<replace password>" api: # Expose API for Home Assistant integration wifi: ssid: "<replace network>" password: "<replace password>" substitutions: mqtt_prefix: "smart_meter" mqtt: broker: 192.168.1.10 username: "<replace user>" password: "<replace password>" topic_prefix: "${mqtt_prefix}" log_topic: "${mqtt_prefix}/logs" keepalive: 300s # Otherwise MQTT client reconnects every 15 seconds uart: rx_pin: GPIO3 # RX pin on D1 mini baud_rate: 115200 rx_buffer_size: 1500 # A bit bigger than P1 message size sensor: - platform: dsmr power_delivered: name: "Power Currently Consumed" state_topic: "${mqtt_prefix}/power_consumed" power_returned: name: "Power Currently Produced" state_topic: "${mqtt_prefix}/power_returned" voltage_l1: name: "Voltage L1" state_topic: "${mqtt_prefix}/voltage_l1" current_l1: name: "Current L1" state_topic: "${mqtt_prefix}/current_l1" energy_delivered_tariff1: name: "Total Energy Consumed Tariff 1" state_topic: "${mqtt_prefix}/energy_consumed_tariff1" energy_delivered_tariff2: name: "Total Energy Consumed Tariff 2" state_topic: "${mqtt_prefix}/energy_consumed_tariff2" energy_returned_tariff1: name: "Total Energy Produced Tariff 1" state_topic: "${mqtt_prefix}/energy_returned_tariff1" energy_returned_tariff2: name: "Total Energy Produced Tariff 2" state_topic: "${mqtt_prefix}/energy_returned_tariff2"
smart_meter.bin
and press Install.mosquitto_sub -v -t 'smart_meter/#' -u aaa -P bbb
Network:
Power saving:
Measuring current:
В сумме резисторы определяют ток протекающий через светодиод. Чем он меньше, тем больше сопротивление перехода коллектор эмитер транзистора. Поскольку транзистор работает на высокоомный вход GPIO, то, думаю, конденсатор на 5-10 мкф + резистор подтяжки в пределах 10-20 кОм хватит. Наверно можно отойти от рекомендаций даташита и ограничить ток светодиодов парой милиампер (резисторы меньше греться будут) – тогда можно поставить два резистора в пределах 50 кОм.
Для вычисления мощности резисторов берём закон Ома и считаем. Как на постоянном токе, считаем действующие значения тока и напряжения. 220В у нас падает на двух последовательных резисторах и диоде. Ну на диоде упасть больше 2В в принципе не может (как и меньше тоже) – им пренебрегаем – и считаем ток в цепи 220В/(50+50) кОм = 2.2 мА. Мощность рассеиваемая на резисторе считаем по формуле I×I×R = 2мА×2мА×50кОм=0.24 Вт плюс на втором резисторе ещё 0.24Вт, т.е всего рассеивается 0.48Вт чистым теплом. Поверьте это не мало. Один резистор в 100 кОм должен был бы рассеять почти 0.5Вт тепла. Хотя для варианта с детекцией дверного звонка этот кратковременный нагрев можно не считать проблемой.
CH340E:
See also:
See also:
See also:
Tools → Processor → ATmega328P (Old Bootloader)
.
Connect the following pins between NodeMCU and Wemos D1:
With USB-TTL converter:
Runnning
pinMode(1, OUTPUT);
breaks serial communication (when doing Serial.println("...");
nothing is printed) because pin 1 and 3 are reserved for TX/RX.
Builtin LED on NodeMCU v3 (LoLin) is on D4 (pin 2) i.e. use
pinMode(2, OUTPUT);