Re: AMS sensors
Добавлено: Ср авг 24, 2016 5:51 pm
Alex, выложите пожалуйста код для умных сенсоров на всеобщее обозрение (даже как есть). Ничего сложного там нет. Я уже прицепил его к ESP)))). Много людей уже спрашивают.
В режиме сна 10 - 50 мкА, в режиме работы 20 мА, период активности от 20 мкс до 1 с. Расчётное время жизни от 1,5 до 4-6 лет, в зависимости от режима работы (скважности и прочих параметров, всё настраивается).Сколько миллиампер потребляют AMS датчики в режиме ожидания и в режиме отправки данных?
В обязательном порядке.Для снижения энергопотребления удаляли встроенный стабилизатор на 5в и светодиоды на ардуине?
Всё очень сырое и я не вижу смысла это публиковать, если есть экстремальные энтузиасты — можно написать запрос на info@hi-lab.ru , и я вам вышлю код в индивидуальном порядке.Исходники можно где посмотреть или это закрытый проект?
Ресурс, если кто не понял, это суммарное отработанное время в режиме активности, т. е. сенсор суммарно потребил 20 мА * 61 сек. + полное реальное время * 50 мкАПоказывает ресурс 61 секунда
Код: Выделить всё
String data1 = String(tempDHT, 1);
String data2 = String(humDHT, 1);
String data = data1+data2;
switch (DHTNeedSend) {
case NEED_SEND_DHT: makePacket(&sendDHTtemp, TYPE_DATA, DTA_TEMP_DHT, 255, "", data1); break;
case NEED_SEND_ALARM_UP: makePacket(&sendDHTtemp, TYPE_ALARM, DTA_TEMP_DHT, 255, "", data1); break;
case NEED_SEND_ALARM_DOWN: makePacket(&sendDHTtemp, TYPE_ALARM, DTA_TEMP_DHT, 255, "", data1); break;
}
Код: Выделить всё
void parseLpTemp() {
String s = "";
s = rxData.substring(0, 5); lpTempTemp = s.toFloat();// что значит субстринг и цифры ?
s = rxData.substring(5, 8); lpTempBattery = s.toInt();
s = rxData.substring(8, 15); lpTempWork = s.toInt();
Serial.println(F("parseLpTemp"));
Serial.print(F("Temp: ")); Serial.println(lpTempTemp);
Serial.print(F("Batt: ")); Serial.println(lpTempBattery);
Serial.print(F("Work: ")); Serial.println(lpTempWork);
lpTempUpdate = (millis() - lpTempOldUpdate) / 1000;
Serial.print(F("Update: ")); Serial.println(lpTempUpdate);
lpTempOldUpdate = millis();
}
Код: Выделить всё
#ifdef NRF24_FEATURE
// commands
#define GET_NAME 1
#define DTA_NAME 2
#define SET_NAME 3
#define GET_ADDR 4
#define DTA_ADDR 5
#define SET_ADDR 6
#define GET_FREE_MEM 7
#define DTA_FREE_MEM 8
#define GET_BATTERY 9
#define DTA_BATTERY 10
#define GET_SELF_TEMP 11
#define DTA_SELF_TEMP 12
#define GET_TEMP_1 13 // Запрос данных с сенсора температуры
#define DTA_TEMP_1 14
#define GET_HEALTH 15
#define DTA_HEALTH 16
#define GET_CONT_1 17
#define DTA_CONT_1 18
#define GET_SET_1 19
#define DTA_SET_1 20
#define GET_LEAK 21
#define DTA_LEAK 22
#define GET_SMOKE 23
#define DTA_SMOKE 24
#define GET_RELAY 25
#define DTA_RELAY 26
#define SET_RELAY 27
#define GET_ID 100
#define DTA_ID 101
#define SET_ID 102
#define GEN_ID 103
#define BAK_ECHO 200
serghei писал(а):как разложить строчку с двумя даннымиКод: Выделить всё
String data1 = String(tempDHT, 1); // 44 String data2 = String(humDHT, 1); // 33 String data = data1+data2; // 4433
Код: Выделить всё
data.substring(0, 2); // от начала строки по второй символ (44)
data.substring(2); // от второго символа и до конца строки (33)
serghei писал(а):А как ссылку заменить каким нибудь словом на форуме ?
Код: Выделить всё
[url=http://arduino.ru/Reference/StringSubstring]Почитать[/url]
Но строку лучше сделать так: первое значение - влажность, второе - температураserghei писал(а):Спасибо, буду разбираться
Код: Выделить всё
String data1 = String(humDHT, 1); // 33
String data2 = String(tempDHT, 1); // 44
String data = data1+data2; // 3344
Код: Выделить всё
void makePacketVol() {
String data1 = (String)vol1; //не понятно как , но иначе не вставляется data ??????????????????????????????????
switch (vol1NeedSend) {
case NEED_SEND_VOL: makePacket(&sendVol1, TYPE_DATA, DTA_VOL_1, 255, "", data1); break;// надо дописать условия передачи при изменении на 1 литр
// case NEED_SEND_ERROR: makePacket(&sendVol1, TYPE_ALARM, DTA_VOL_1, 255, "", "err"); break;
//case NEED_SEND_REMOVED: makePacket(&sendVol1, TYPE_ALARM, DTA_VOL_1, 255, "", "rem"); break;
//case NEED_SEND_NOT_PRESENT: makePacket(&sendVol1, TYPE_ALARM, DTA_VOL_1, 255, "", "not pres"); break;
// case NEED_SEND_ALARM_UP: makePacket(&sendVol1, TYPE_ALARM, DTA_VOL_1, 255, "", data); break;
// case NEED_SEND_ALARM_DOWN: makePacket(&sendVol1, TYPE_ALARM, DTA_VOL_1, 255, "", data); break;
}
Код: Выделить всё
void ss() {
setNotRequired(&sendVol1); setPacketType(&sendVol1, TYPE_ANSWER); vol1NeedSend = NEED_SEND_VOL; sendPacket(DTA_VOL_1); setPacketType(&sendVol1, TYPE_DATA);
setNotRequired(&sendVol2); setPacketType(&sendVol2, TYPE_ANSWER); vol2NeedSend = NEED_SEND_VOL; sendPacket(DTA_VOL_2); setPacketType(&sendVol2, TYPE_DATA);
}