У китайцев купил задешево цветной экранчик 1.4" или 1.8", 128*160 пк; проверил с ардуиной и отложил
А сегодня решил поделать что-то с ним и долго втыкал, как подключить, нашел распиновку на каком-то испаноязычном сайтике, заначу себе, чтоб не забыть:
#include "Adafruit_GFX.h"
#include "Adafruit_ST7735.h"
/*
LCD - Wemos
LED - 3.3v
SCK - D5
SDA - D7
A0 - D3
RST - D4 - можно подключить к RST контроллера и сэкономить одну ножку
CS - D8
GND - GND
VCC - 5v
*/
#define TFT_CS D8
// #define TFT_RST D4
#define TFT_RST 0
#define TFT_DC D3
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
Работает; очевидно, что не выводит традиционные тестовые русские текстовки, но то такое, можно и обойтись
Тут живет, умеренно жалуется на жизнь и умеренно хвалится успехами умеренно толстый хомяк
Показаны сообщения с ярлыком esp8266. Показать все сообщения
Показаны сообщения с ярлыком esp8266. Показать все сообщения
воскресенье, 3 февраля 2019 г.
воскресенье, 20 января 2019 г.
Как ни удивительно, но к этому новому году не было ни новых гирлянд каких-нибудь (не считая китайских led-гирлянд с питанием от усб за смешные деньги, которыми обкрутили все на свете), прошлогодние поделки вполне себе хорошо справились:
.. ни новых часов никаких.
Когда был "час та натхнення" - мастерил древнюю идею, до которой наконец дошли руки, идея такая: за окном цепляем блок с датчиками температуры, он по ви-фи постит куда-то периодично свои показания, где-то в доме другой блок, со своими датчиками и экранчиком, на котором выводятся температура внутри, снаружи, из интернета, прогноз (ну и часы, как без них, дни до НГ, дни до отпуска etc)
Закончил наружный блок, потестировал и прослезился.. на балконе, на солнце показывает 30С, что конечно не так. На солнце - потому что внутри аккумулятор, который подпитывается солнечной батареей:
Конструкция по-идее должна была вентилироваться и обеспечивать поступление свежего забортного воздуха, но наверное из-за небольших размеров + полное отстутствие движения воздуха на тестируемом балконе (а за окном у меня в общем то же самое) имеем что имеем :(
А так внутри плата с esp8266 и сенсор bme280, плюс аккумулятор li-ion и контроллер заряда для него, питающийся от солнечной батареи. После старта контроллер пытается подключится к последней точке ви-фи, если не получается - создает свою точку доступа, через которую можно войти и выбрать нужную сеть; ждет минуту, если ничего не происходит - засыпает для экономии батарейки
Если ви-фи есть - читается датчик (температура, давление и влажность; bmp280 умеет читать только температуру и давление, но он дешевле немного зато, хотя цены там $$4-6 емнип), передаются данные в blynk и контроллер уходит в глубокий сон на 15 мин
Из мыслей на след. версии - частота обновления, которая бы зависела от напряжения аккумулятора: есть солнце, заряжается хорошо - можно хоть и раз в минуту обновлять данные, заряд ближе к "плохо" - раз в пол-часа, в час.. Потому что читал, что если напряжение упадет ниже какого-то минимума - контроллер перестанет запускаться, и даже если потом аккумулятор зарядится - контроллер так и не сможет запуститься без внешнего пинка в кнопку reset, что конечно вообще не интересно. Для предотвращения заказал dc-dc преобразователь, который выдает 5 вольт из напряжений, начиная с 0,8 вольт, хотя контроллер заряда отключит аккумулятор намного раньше, при 2.4 вольт емнип; ну и есть специальные чипы, которые как раз должны делать перезапуск при достижении нормального напряжения, про них еще нужно читать
Ну и вторая мысль - переделать корпус, сделать его больше/круглым в сечении, вставить моторчик с вентилятором и при высоких температурах == много солнца и напряжения продувать датчик перед измерением.. буду что-то выдумывать.
Это первая часть марлезонского балета, приложением на телефоне можно смотреть данные; следующая часть задумывалась как что-то похожее, но кроме своих данных из инета будет читаться прогноз погоды и из blynk браться данные внешгено блока, и это все красиво показываться на 128*160 цветном экранчике 1.8", хотя тут "я у мамы дизайнер" это не про меня и все тормозится бОльше вот на этом моменте :(
.. ни новых часов никаких.
Когда был "час та натхнення" - мастерил древнюю идею, до которой наконец дошли руки, идея такая: за окном цепляем блок с датчиками температуры, он по ви-фи постит куда-то периодично свои показания, где-то в доме другой блок, со своими датчиками и экранчиком, на котором выводятся температура внутри, снаружи, из интернета, прогноз (ну и часы, как без них, дни до НГ, дни до отпуска etc)
Закончил наружный блок, потестировал и прослезился.. на балконе, на солнце показывает 30С, что конечно не так. На солнце - потому что внутри аккумулятор, который подпитывается солнечной батареей:
Конструкция по-идее должна была вентилироваться и обеспечивать поступление свежего забортного воздуха, но наверное из-за небольших размеров + полное отстутствие движения воздуха на тестируемом балконе (а за окном у меня в общем то же самое) имеем что имеем :(
А так внутри плата с esp8266 и сенсор bme280, плюс аккумулятор li-ion и контроллер заряда для него, питающийся от солнечной батареи. После старта контроллер пытается подключится к последней точке ви-фи, если не получается - создает свою точку доступа, через которую можно войти и выбрать нужную сеть; ждет минуту, если ничего не происходит - засыпает для экономии батарейки
Если ви-фи есть - читается датчик (температура, давление и влажность; bmp280 умеет читать только температуру и давление, но он дешевле немного зато, хотя цены там $$4-6 емнип), передаются данные в blynk и контроллер уходит в глубокий сон на 15 мин
Из мыслей на след. версии - частота обновления, которая бы зависела от напряжения аккумулятора: есть солнце, заряжается хорошо - можно хоть и раз в минуту обновлять данные, заряд ближе к "плохо" - раз в пол-часа, в час.. Потому что читал, что если напряжение упадет ниже какого-то минимума - контроллер перестанет запускаться, и даже если потом аккумулятор зарядится - контроллер так и не сможет запуститься без внешнего пинка в кнопку reset, что конечно вообще не интересно. Для предотвращения заказал dc-dc преобразователь, который выдает 5 вольт из напряжений, начиная с 0,8 вольт, хотя контроллер заряда отключит аккумулятор намного раньше, при 2.4 вольт емнип; ну и есть специальные чипы, которые как раз должны делать перезапуск при достижении нормального напряжения, про них еще нужно читать
Ну и вторая мысль - переделать корпус, сделать его больше/круглым в сечении, вставить моторчик с вентилятором и при высоких температурах == много солнца и напряжения продувать датчик перед измерением.. буду что-то выдумывать.
Это первая часть марлезонского балета, приложением на телефоне можно смотреть данные; следующая часть задумывалась как что-то похожее, но кроме своих данных из инета будет читаться прогноз погоды и из blynk браться данные внешгено блока, и это все красиво показываться на 128*160 цветном экранчике 1.8", хотя тут "я у мамы дизайнер" это не про меня и все тормозится бОльше вот на этом моменте :(
пятница, 16 ноября 2018 г.
Хозяйке на заметку
Если esp8266 пишет в постоянную память, то надо подготовится сначала
EEPROM.begin(buf_size);
а потом подтвердить, что можно сохранять
EEPROM.commit();
А для обычных ардуин всяких такого не нужно было
EEPROM.begin(buf_size);
а потом подтвердить, что можно сохранять
EEPROM.commit();
А для обычных ардуин всяких такого не нужно было
суббота, 27 октября 2018 г.
Мультитаргет в platformio
Заметка будуЮщему себе (я то точно знаю, что разобравшись сейчас через 2 недели я не буду помнить ни-фи-га)
Итак, я сделал проект в platformio, для esp8266, все более-менее работает; плату выбрал не потому, что нужно было, а потому, что была; и вот теперь хочется сделать "финальный" вариант железки, для которой вполне достаточно "обычной" ардуины, которую как раз китайская + укр почты привезли. Вариант "в лоб" очень уж мне не нравится - сделать еще один проект, перенести туда все файлы и код, поправить код, ну фигня же - в конце концов синьор я программист или так, с улицы зашел? :)
Поэтому мне нужно как-то сделать так, чтобы с минимальными изменениями работающий код работал на другой железке.
Шаг 1: в существующий проект надо как-то добавить новую плату. Делается это не то, чтоб очевидно, но просто: делаем новый проект, выбираем в списке нужную плату, даем ему имя существующего уже проекта и сохраняем в папку, в которой лежит сужествующий проект; и все, ide достаточно сообразительное, чтобы подокачивать если нужно файлы нехватающие и добавить в настройку проекта новый "таргет"; настройки хранятся в файле platformio.ini в папке с проектом и после всего там появляется что-то типа:
Шаг 2: если сейчас запустить сборку, то соберуться оба таргета, что очевидно не совсем то, что нужно. А нужно как-то переключаться между ними - так как делать это скорее всего придется совсем редко, я не углублялся в гугление и остановился на следующем: в тот же platformio.ini добавляется еще одна секция:
Раскоментиваем нужный таргет - вуаля, теперь собирается и заливается именно он. Но железо то скорее всего немного, но разное, поэтому
Шаг 3: секции с описанием таргетов модифицируются вот так:
теперь в коде можно использовать директивы компилятора, по которым можно отличать - какая плата сейчас используется (ну или вон отладку включить), что-то типа такого (причем получилось вообще хорошо, в одном месте вся инициализация железячная):
и это все
Надеюсь это мне пригодится когда-нибудь еще :)
Итак, я сделал проект в platformio, для esp8266, все более-менее работает; плату выбрал не потому, что нужно было, а потому, что была; и вот теперь хочется сделать "финальный" вариант железки, для которой вполне достаточно "обычной" ардуины, которую как раз китайская + укр почты привезли. Вариант "в лоб" очень уж мне не нравится - сделать еще один проект, перенести туда все файлы и код, поправить код, ну фигня же - в конце концов синьор я программист или так, с улицы зашел? :)
Поэтому мне нужно как-то сделать так, чтобы с минимальными изменениями работающий код работал на другой железке.
Шаг 1: в существующий проект надо как-то добавить новую плату. Делается это не то, чтоб очевидно, но просто: делаем новый проект, выбираем в списке нужную плату, даем ему имя существующего уже проекта и сохраняем в папку, в которой лежит сужествующий проект; и все, ide достаточно сообразительное, чтобы подокачивать если нужно файлы нехватающие и добавить в настройку проекта новый "таргет"; настройки хранятся в файле platformio.ini в папке с проектом и после всего там появляется что-то типа:
[env:esp8285]
platform = espressif8266
board = esp8285
framework = arduino
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
Шаг 2: если сейчас запустить сборку, то соберуться оба таргета, что очевидно не совсем то, что нужно. А нужно как-то переключаться между ними - так как делать это скорее всего придется совсем редко, я не углублялся в гугление и остановился на следующем: в тот же platformio.ini добавляется еще одна секция:
[platformio]
#env_default = esp8285
env_default = nanoatmega328
Раскоментиваем нужный таргет - вуаля, теперь собирается и заливается именно он. Но железо то скорее всего немного, но разное, поэтому
Шаг 3: секции с описанием таргетов модифицируются вот так:
[env:esp8285]
platform = espressif8266
build_flags = -D TARGET_ESP8266
board = esp8285
framework = arduino
[env:nanoatmega328]
platform = atmelavr
build_flags = -D TARGET_AVR -D DEBUG
board = nanoatmega328
framework = arduino
теперь в коде можно использовать директивы компилятора, по которым можно отличать - какая плата сейчас используется (ну или вон отладку включить), что-то типа такого (причем получилось вообще хорошо, в одном месте вся инициализация железячная):
#ifdef TARGET_ESP8266
static const int audioAlarmPin = 14; // D5
static const int buttonPin = 16;
#warning BUILDING for esp
#endif
#ifdef TARGET_AVR
static const int audioAlarmPin = 12;
static const int buttonPin = 4;
#warning BUILDING for avr
#endif
и это все
Надеюсь это мне пригодится когда-нибудь еще :)
четверг, 6 сентября 2018 г.
Я столько делал поделок на esp8266, а каждый раз начиная новую туплю - с чего начать
Вчера тупил и не мог понять - как зашить что-то в чип? Чипов был прикупил когда-то кучку таких
Пишу себе памятку: надо нажать кнопку flash и удерживая - нажать reset; после этого начинать заливать прошивку: плата при загрузке "увидит", что зажата кнопка flash и перейдет в режим прошивки
Выяснял вчера долго это методом тыка, а выяснив - понял, что вроде все же логично
з.ы. причем мне не нужен wifi - просто ардуины закончились :(
Вчера тупил и не мог понять - как зашить что-то в чип? Чипов был прикупил когда-то кучку таких
Пишу себе памятку: надо нажать кнопку flash и удерживая - нажать reset; после этого начинать заливать прошивку: плата при загрузке "увидит", что зажата кнопка flash и перейдет в режим прошивки
Выяснял вчера долго это методом тыка, а выяснив - понял, что вроде все же логично
з.ы. причем мне не нужен wifi - просто ардуины закончились :(
Подписаться на:
Сообщения (Atom)



