NodeMCU+ds18b20 без библиотек
- Войдите на сайт для отправки комментариев
Прошу непосылайте в 8266 сообщество вопрос простой надеюсь.....
Приветствую форумчан, решил поиграться с такой штукой как 8266-12e уже распаянный, на замену Nano с её 32кб памяти очень холчется БОЛЬШОЕ и ёмкое меню на 2,2spi :) а памяти нехватает с моими кривыми руками.
пытаюсь подключить по OneWire датчики на ds18b20 используя адресацию каждого и неиспользуя библиотеку <DallasTemperature.h> а лишь <OneWire.h>
переменные определил так:
int tempPin=D6; //Определяем порт шины OneWire (IC) для температурного датчика DS18B20 OneWire ds(tempPin); //Создаем объект для работы с термометром byte flagDallas=0; //Флаг для обработки показаний с датчиков Dallas byte data[12]; byte addr1[8]={0x28, 0xFF, 0x9C, 0x20, 0x54, 0x14, 0x01, 0xC2}; //адрес датчика DS18B20_ 28 FF 9C 20 54 14 1 C2 byte addr2[8]={0x28, 0xFF, 0xB5, 0x24, 0x54, 0x14, 0x01, 0xC7}; //адрес датчика DS18B20_ unsigned int raw; //Если экранированный кабель, можно подключать до 32 термо-датчиков DS18B20 float temp[2]; //Температура ...\....
а цикл с полученим показаний с датчика такой:
//=========== Считывание температур void dallas(){ ds.reset(); ds.write(0xCC); //Команда инициации ds.write(0x44); //Start conversion, with parasite power on at the end tzad=millis()+750; flagDallas=1;} float DS18B20(byte *adres){ ds.reset(); ds.select(adres); ds.write(0xBE); //Read Scratchpad for (byte i=0; i<9; i++) data[i]=ds.read(); //We need 9 bytes int raw=(data[1]<<8) | data[0]; //Переводим в температуру float celsius=(float)raw/16.0; //Для ds18b20 делим на "16", для ds18s20 на "2" return celsius; //=========== Обработки печати и вывода на дисплейчик (динамики) void printDin(){ if (millis()-prvMlsVo>zadTime[3]){ //Проверяем интервал для обновления показателй динамичных prvMlsVo=millis(); tft.setTextSize(3); tft.setCursor(20,60); tft.setTextColor(WHITE, MAGENTA); tft.print(temp); Serial.println(temp);
и получаю показания типа 0,00
Этот же скечт на Nano работает как часики.
На этом же пине в 8266-12е с ПРИМЕРОМ из библиотеки #include <DallasTemperature.h> всё находится, конвертируются показания.
p/s ОЧЕНЬ важное замечание использую tft на ILI9163C и как только я определяю его в setup() как tft.begin();
то и сбиблиотекой значения -127
Помогите КАК запустить ds18b20 на этой чудо плате, может в setup() датчики запускать иначе?
может надо просто понять что это чудо не ардуина :))) и там наверно свои тараканы
Вот к этому я потихонечку и подхожу покуривая 8266 сообщество. Чесно говоря - тёмноватый лес пока и укак то "нележит" к самим ардуинкам. Но чисто логически код работающий исправно и вдруг такая засада, более того, даже ПРИМЕР отлично работающий вдруг перестаёр рабтать при определении дополнительных библиотек, и самое странное по отдельности прекрансо работают, более тго tft просто летает. Жаль бьюсь вторую недели почуть чуть в свободное время и думал что будет "быстро".
у меня всё работало, вот только не помню с библиотеками или без, залил скетч, выставил датчики на улицу, съём показаний раз в 5 минут
Выходит без
Что нашёл из заготовок:
Вот взгляните пожалста на такое... в определении библиотек и переменных сделал так:
в цикл вставил уже тупо код из библиотеки OneWire так:
ну тоесть прямо бибилиотечный, а в setup() прописал только Serial.begin(115200);
и в мониоре вижу следующее:
Chip = DS18B20
Data = 1 90 1 14 97 1F FF 1F 10 83 CRC=83
Temperature = 25.00 Celsius, 77.00 Fahrenheit
No more addresses. // датчик пока один... но будет несколько на одном проводе :)
и стоит дописать в setup()
Serial.begin(115200);
tft.begin();
получаем в мониторе лишь No more addresses.
Ну явно чт от омешает работать с адресами в OneWire 9нехватает у меня знаний вот так и думаю, а поправить немогу)
пробовал библиотечки и с ili9341 и с ili9163 - все тоже
Чет мне подсказывает, что они совместно один таймер пытаются юзать. Помочь не помогу, сам не умею.
Thorn, выбросьте тот огрызок, мне стыдно за него. Здесь поэлегантней, на миллис ниже есть.
Если сумеете как то ЕвгенийП поймать, он писал что делал для тиньки без библиотек, может что присоветует.
Как всегда спасибо ув. bwn :) Вадим за разъяснение, пока отложил понемногу проектик перехода, упершись во вссего 10 цифровых пинов у node .... из них сам дисплейчки забирает уже 6!!!!! остается 4. Для dallas, для dht, а вот bmp уже ДВА просит :( и всё... ни тебе fruj исполнительного механизма уже неподключить в итоге, все только мониторить на экранчике да на веб-страничке, тут конечно красота. Так что нетак то она и хороша по сравнению со строй доброй Nano-й
А I2C аппаратный у нее есть? Если да, то исполнительных вкл-выкл можно гору через PCF8574 подцепить. Этот на восемь входов-выходов, есть на 16.
имеется на первом\втором пинах... несмотря на то что СЛЕВА все SPI выведены (аккурат под tft дисплейчки) - НИ с одной библиотекой я так там и незаставил их работать.
заработало лишь как на нижнем скрине (пробовал и ili9341 и ili9163c):
Ну, здесь не помошник, не было такого зверя у меня.))))
А вы какие библиотеи используете? Адаптированые для есп? Для экрана нагуглил: https://github.com/Sermus/ESP8266_Adafruit_ILI9341
Там рекомендуют соединять так:
ILI9341 pin --> ESP8266 pin
MOSI --> GPIO13
CLK --> GPIO14
CS --> GPIO15
DC --> GPIO2
Reset to 3.3v
GND to ground
MISO may be left unconnected
Тоже пробую с есп разобраться, портов не хватает, там из тех что есть не все можно полноценно использовать:
Библиотечки именно под esp8266 (в настройках среды ардуино http://arduino.esp8266.com/package_esp8266com_index.json)
а вот как выглядит макетка :) тут уже показания с dallas-127 (при setup() tft.begin(); )
а вот показания c I2S bpm085 (3.3v) выводятся правильно (правда я до сих пор непонимаю почему в томже setup() нельзя скорректировать ВЫСОТУ моей местности, потмоу давление и высота на 251метр примерное ниже чем должно быть. Находил что это прописывается в выводе!!! уже показаний но не в расчёте tft.print( bmp.readSealevelPressure()/133.3,1);
Для экрана нагуглил: https://github.com/Sermus/ESP8266_Adafruit_ILI9341
А куда вы библиотеку то "засунули", пробовал в ТРИ места :) ни в одном НЕПОЯВИЛАСЬ в списке примеров:
C:\Users\......\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries
D:\Arduino\libraries\
D:\Arduino\Sketch\libraries\
В прежних версиях среды была ОДНА папка Arduino\libraries\ и в ней что ни появись тут же вылазили или проблемы несовмстимоси при компилировании (IR к примеру с MotorShield) и тп. а счас в трёх местах все дублируется
Thorn, а от чего у Вас вся эта лабуда запитана? -127 это чаще всего отсутствие питания (могу ошибаться).
А куда вы библиотеку то "засунули", пробовал в ТРИ места :) ни в одном НЕПОЯВИЛАСЬ в списке примеров
она не для ардуино ide, просто как демонстрация, что схема подключения зависит от библиотеки.
У вас получается библиотеки из ардуино подключаются, кроме специфичных которые подкачались при установке ардуино коре для 8266.
Thorn, а от чего у Вас вся эта лабуда запитана? -127 это чаще всего отсутствие питания (могу ошибаться).
Вот то то и оно чтоо т общей +5В схемы питания самой node, как я уже отмечал -127 выводится тутже после старта tft крана в setup..... стоит закоментить в скетчике и вуаля нормальные данные :)
В качестве полета фантазии: отключать экран на момент замера, потом обратно инициировать (проверить не на чем, возможно бред).
На всякий случай проверить питание при инициализации, хотя вряд ли. Подсветка в этот момент загораться не должна, а больше там жрать нечему.