Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Honey
2022-01-20 13:42:11
Sattva пише:

Рад, что кто-то реализовал счетчик
Спасибо!

Пожалуйста.
Благодарные отзывы вдохновляют на разработку новых устройств)

Sattva
2022-01-20 00:49:09

Классный проект. В 2012 году купил в США
плату на DS2423. За 10 лет даже батарейку
не менял. Но задумался о том, как жить дальше
без DS2423, если нужен подсчет импульсов.

Рад, что кто-то реализовал счетчик
на ATTiny и теперь за 200 грн можно забыть
о проблеме низкого энергопотребления в счетчиках
импульсов, так как все уже решено. Спасибо!
При случае куплю парочку таких милых счетчиков.

P.S. Продажа своего продукта это не реклама чужого с целью наживы, и не барыжничество. Это скорее информирование о проделанной работе, которая доведена до коммерческого продукта. Это уже разработка и производство.
Этим гордиться нужно, а не прятать,
чтоб никто не нашел.

Honey
2022-01-19 01:54:19

Для Kirill:

Для Вашего ESP8266
https://www.espruino.com/OneWire
и библиотека для счетчика:
DS2423.js

/*
Module for the DS2423 dual channel counter

```
var ow = new OneWire(A1);
var cnt = require("DS2423").connect(ow);
var A = cnt.getCounter(0);
var B = cnt.getCounter(1);
var cnt2 = require("DS2423").connect(ow, 1);
var cnt3 = require("DS2423").connect(ow, 7302954342158582045);
```
*/

var C = {
  READ_MEM_COUNTER: 0xa5
};

function DS2423(oneWire, device) {
  this.bus = oneWire;
  if (device === undefined) {
    this.sCode = this.bus.search()[0];
  } else {
    if (parseInt(device).toString()==device && device >= 0 && device <= 126) {
      this.sCode = this.bus.search()[device];
    } else {
      this.sCode = device;
    }
  }
  if (!this.sCode) throw new Error("No DS2423 found");
  this.type=parseInt(this.sCode[0]+this.sCode[1]);
}

/** Return true if this device is still connected to the OneWire Bus */
DS2423.prototype.isPresent = function () {
  return this.bus.search().indexOf(this.sCode) !== -1;
};

/** For internal use - check crc16 of the buf */
DS2423.prototype._check_crc16 = function (buf) {
  var crc = 0;
  var oddparity = [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0];
  for (var i=0;i<buf.length;i++) {
    var cdata = buf[i];
    cdata = (cdata^crc)&0xff;
    crc >>= 8;
    if (oddparity[cdata&0x0f] ^ oddparity[cdata>>4])
      crc ^= 0xc001;
    cdata <<= 6;
    crc ^= cdata;
    cdata <<= 1;
    crc ^= cdata;
  }
  return crc==0xb001;
};

/** Get counter, num = 0 corresponds to A, num = 1 corresponds to B
  If the CRC fails, 'null' will be returned */
DS2423.prototype.getCounter = function(num) {
  var buf = [C.READ_MEM_COUNTER, num?0xff:0xdf, 0x01];
  this.bus.select(this.sCode);
  this.bus.write(buf);
  buf = buf.concat((this.bus.read(11));
  // buf[3] - last byte of page, buf[4..7] - 32 bit counter,
  // buf[8..11] - zeroes, buf[12..13] - crc16
  if (this.bus._check_crc16(buf))
    return  buf[4] | (buf[5]<<8) | (buf[6]<<16) | (buf[7]<<24);
  return null;
}

/** Initialise a DS2423 device. Use either as:
  connect(new OneWire(pin)) - use the first found DS2423 device
  connect(new OneWire(pin), N) - use the Nth DS2423 device
  connect(new OneWire(pin), ID) - use the DS2423 device with the given ID
 */
exports.connect = function(oneWire, device) {
    return new DS2423(oneWire, device);
};

Не тестировал - не на чем, отпишитесь о результатах.

adapbel
2021-01-10 23:06:27

Спасибо за помощь в настройке! Устройство работает как заявлено!

Honey
2021-01-08 22:43:11
adapbel пише:

Добрый день! Купил 2 шт Ваших девайсов. Не сканируются по шине OneWire. Что делать?

Ответил по почте, продублирую и здесь тоже:

1. Должна быть вставлена батарейка CR2032 (не аккумулятор LIR2032, а именно батарейка, напряжение на батарейке должно быть до 3.6V), наличие батарейки является обязательным.
2. Для начала запитайте счетчик по линии VCC, напряжение питания должно быть в пределах 4.5-5.5 V
3. На линии DQ также должно быть напряжение 4.5-5.5 V, резистор подтяжки в данном случае подойдет любой, если есть, используйте 1кОм

Если при таком подключении счетчик определяется, можно пробовать отключать VCC и пробовать питать паразитно.

adapbel
2021-01-08 19:14:01

Добрый день! Купил 2 шт Ваших девайсов. Не сканируются по шине OneWire. Что делать?

Honey
2020-09-27 16:35:43

Я тему открыл для того, чтобы увлекающиеся люди, у которых возникает задача "как снять показания со счетчиков в системах умный дом?", знали, что есть еще и такое решение, могли подсказать его другим. Уверен, что многие будут благодарны.
Барыжат те, кто покупает готовое устройство в Китае и перепродает его тут. В данном случае это устройство - полностью мой проект, я его программировал и паял.
Kaka, судя по вашим комментариям на этом форуме в других темах, Вы здесь занимаетесь не тем, что делитесь наработками с коллегами, а занимаетесь троллингом.

Kaka
2020-09-27 16:01:00

Послушай, Мёд, ты заметил, что это раздел называется "Проекты" а вовсе не "Реклама" (которая здесь запрещена, кстати). Здесь делятся наработками с коллегами по хобби в порядке взаимообучения и обмена опытом, а не барыжат!

Honey
2020-09-27 13:57:21

Kaka, если Вы хотите бесплатно, то найдите на гитхабе по запросу owslave, выберите понравившуюся реализацию и переделайте под себя. Если Вы хотите кошерно, то купите на али оригинальную микросхему, компараторы, закажите плату и спаяйте, схем полно. Я могу Вам предложить только уже готовое свое устройство по бюджету, в который обойдется второй вариант.

Kaka
2020-09-27 12:50:07

А скетч где, "с блэкджеком и ... короче с вышеперечисленными фишечками"?

Honey
2020-09-27 11:15:48

Зарезервированный комментарий, сюда буду переносить важную информацию для быстрого доступа, если тема разрастется.

Буду рад ответить на вопросы связанные с подключением и настройкой счетчика.

UPD:
Счетчик импульсов уже можно приобрести в магазине arduino.ua
https://arduino.ua/prod4180-schetchik-i … -v-ykraine

Honey
2020-09-27 10:37:43

В этой теме хочу рассказать про проект, который изначально делался просто для себя, но решение получилось удачным и теперь я готов поделиться с другими.
TL;DR: исходников в теме не будет

Примерно лет 10 назад ко мне попали датчики температуры DS18B20, работающие по протоколу 1-wire, наставил их везде, и в квартире, и на улице, и на стояки холодной и горячей воды. Мне очень понравился протокол: всего два провода (данные и земля), питание по линии данных (паразитное), к одному мастеру подключается куча устройств. Почитал, какие еще устройства работают по этому протоколу, из полезных для умного дома оказалось не так много: ADC, GPIO, Counter. ADC - незаменимая штука для работы с аналоговыми датчиками, например на нем собрал схему с датчиком влажности от Honeywell, GPIO - позволяет как подключать реле, так и работать на вход, Counter - с его помощью можно было бы снимать показания со счетчиков электроэнергии, воды, отопления. Почему можно было бы? Микросхему (DS2423) в то время я нигде достать не смог, позже узнал, что она уже не производится. Сейчас на али ее можно заказать по цене от 100грн, вероятно это из старых запасов.
Не так давно я увлекся AVR и как-то случайно нашел программную реализацию подчиненного устройства 1-wire (кому нужны подробности, называется owslave3d), в которой был пример реализации DS2423. Естественно все было скомпилировано и запущено, устройство определилось как DS2423! Но, как и оригинальная микросхема, оно требовало на счетном входе цифровой сигнал, а для аналоговых датчиков, того же фототранзистора, нужно городить схему с компараторами и делителями на подстроечных резисторах. Во-торых, ток потребления был порядка 1мА, от батарейки надолго не оставишь работать, нужно хотя-бы 10мкА. И в третьих, были глюки в работе - устройство отвечало ровно через раз. Поэтому я решил написать с нуля свою реализацию с блэкджеком и ... короче с вышеперечисленными фишечками.
cntmaket.jpg
Примерно полгода с первой реализации примерно вот такое устройство считало импульсы с моего счетчика ээ, периодически допиливал прошивку и несколько раз менял схему, каждый раз убирая из нее "лишнее". В результате из обвязки МК осталось 4 детали, включая батарейку:
cntschem.png
Вот так выглядит страничка конфигурирования устройства
counter.png
Подключение счетных датчиков, в том числе аналоговых, также по принципу минимизации обвязки: фототранзистор, инфракрасный отражатель - напрямую к выводам GND,A,B,PWR. Энергопотребления, даже с подключенными потребляющими датчиками, удалось достичь 5-15мкА.
Реализация, на мой взгляд, получилась удачная. Читая в различных статьях по умному дому, как люди ищут способ снимать показания со счетчиков, перечисляют несколько решений и выбирают подходящее для себя, понял, что мое устройство вполне могло бы конкурировать с другими решениями. Заказал в Китае печатные платы и сейчас устройство приобрело товарный вид.
counter.jpg
Для начала посмотрю, будет ли пользоваться спросом, если да, то у меня появилось куча новых идей для новых устройств, например по 1-wire с МК можно по ИК (как с пульта ДУ) управлять различными домашними устройствами. У меня дома стоит счетчик отопления Multical, у него есть UART интерфейс, можно было бы для него сделать плату расширения (там предусмотрено подключение плат расширения) и по 1-wire читать с него данные напрямую.

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