Комментарии 16
Вопрос по питанию. Можно ли было просто взять линейный стабилизатор напряжения LM7803 и пару конденсаторов?
Не пробовал. Он дает 3V, а это нижняя граница для ESP8266 (судя по даташиту 3.0-3.6V).
У меня на 3.12В барахлит, на форумах тоже пописывают что к питанию сильно чувствителен модуль. Мож и не в этом проблема…
Попробовать просто же, ничего не сгорит на 3В
Сложность заключается в том, что UART у ESP8266 всего один

Полтора (на втором доступен только TX), а если не использовать SPI-Flash то два.
Второй находится по адресу 0x60000F00 и его TX торчит из GPIO2.
А что делать вот с этим «находится по адресу»? А то мне тут надо было инвертнуть уарт, но так и не понял как к регистрам получить доступ, пришлось транзистором инвертировать.
так и не понял как к регистрам получить доступ

С SDK идут примеры, открываете какой-нибудь examples/IoT_Demo/driver/uart.c и видите что-то такое:
    WRITE_PERI_REG(UART_CONF0(uart_no),    UartDev.exist_parity
                   | UartDev.parity
                   | (UartDev.stop_bits << UART_STOP_BIT_NUM_S)
                   | (UartDev.data_bits << UART_BIT_NUM_S));

Определения этих макросов — в include/eahle_soc.h и examples/IoT_Demo/include/driver/uart_register.h, это обычная запись в MMIO.
Хо хо, работает
Только почему-то в uart_register.h ошибка, там бит инверсии прописан как 12-й. А вот тут как 22-й, и это правильно
uart_init(BIT_RATE_9600, BIT_RATE_9600);
SET_PERI_REG_MASK(UART_CONF0(0), BIT(22));
Хо хо, работает

Поздравляю (:
Только почему-то в uart_register.h ошибка

Я не сильно удивлён; конечно лучше сверяться с документацией.
data = nil
data = string.char(ow.read(pin))
for i = 1, 8 do
   data = data .. string.char(ow.read(pin))
end
crc = ow.crc8(string.sub(data,1,8))


Все же лучше так:

local data = {}
for i = 1, 8 do
   table.insert(data, ow.read(pin))
end
local crc = ow.crc8(table.concat(data))
Я как-то все не могу уловить смысл использования локальных переменных и функций.
Так быстрее? Или это в целях экономии памяти?
Сколько мА потребляет вся эта конструкция? Я так понимаю, что датчик CO2 находится во включенном состоянии все время?
На всех измерителях тока для USB пишет 0 мA(до 10), иногда мигает 50 — 100 ма Получается что жрет только ESP8266.
Работает двое суток от PowerBank емкостью ~ 5000 mAh, сожрал пока 35%.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.