Оглавление:

Attiny85 Termómetro OLED: 5 шагов
Attiny85 Termómetro OLED: 5 шагов

Видео: Attiny85 Termómetro OLED: 5 шагов

Видео: Attiny85 Termómetro OLED: 5 шагов
Видео: Эмулятор датчика ds18b20 2024, Октября
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Este proyecto consiste en un termómetro pequeño y simple que muestra la temperatura actual, la humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y consumo de batería convergen en un dispositivo pequeño y portátil.

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

Запасы

1 х ATtiny85

1 x Arduino UNO / PRO / и т. Д. (Programador del ATtiny)

1 x 128x64 pantalla I2C OLED

1 x датчик температуры DHT22

1 x Resistencia 4,7 МОм (1/4 Вт)

1 x электролитический конденсатор 0,1 мкФ

1 x Fuente de 3.3V - 5V 10+ x перемычки

Шаг 1: Descripción Del Funcionamiento

El Objetivo del Proyecto es mostrar los tres valores anteriormente mencionados en la pantalla OLED, además, como objetivo secundario, e includes uso de la librería sleep.he interrupt.h para activar el termómetro manualmente y así reducir el consumida de la extender la extender la batería.

Nuestro programa se guiará por el siguiente processso: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.

Para cada uno de estos pasos dejaremos la mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. Библиотека датчиков DHT для Adafruit (доступна в IDE) и Tiny4kOLED для данных, которые загружаются с Github, все, что вам нужно, это автор оригинальных данных, которые необходимо изменить и изменить.

El método de reinicio puede ser tanto un botón como dos placas metálicas que se tocan para encender el equipo. В личном плане он encontrado la opción de las placas metálicas más interactivo.

Шаг 2: схемы

Схемы
Схемы
Схемы
Схемы
Схемы
Схемы

Для начального изображения, необходимого для схемы, требующейся для программы ATtiny85. Примерьте эту программу на Arduino (конденсатор, который следует удалить) с эскизом ArduinoISP, который находится в архиве -> Ejemplos -> 11. ArduinoISP. У вас должен быть конденсатор, который нужно установить для каждого нового Arduino, установленного в программе ATtiny85.

El ATtiny является источником питания прямого доступа к Arduino. En caso de utilizar una fuente de poder como una batería es necesario conectar la masa (GND) del Arduino y el ATtiny85.

Colocar un botón entre el pin 13 del Arduino y el 2 del ATtiny puede fastenar el hacer pruebas ya que la pantalla no puede estar conectada cuando se programa al ATtiny.

Como se observa en las imágenes. Штырь SDA для ATyiny находится в 0 и в SCL / CLK как в 2. Nuestro DHT подключен к штифту 4.

Шаг 3: Programación

Пример, выберите "Arduino as ISP" для программы. Si aún no han instalado la placa para el ATtiny, Recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me generó ningún проблема compilación durante la realización del proyecto.

Эта платформа сконфигурирована для BOD с внутренней частотой 8 МГц и OptiBoot. При использовании 1MHz для связи через I2C нет стабильного и 16-мегагерцевого внешнего внешнего сигнала, достаточно большого количества энергии и значительного количества энергии.

Как удалить его из архива в библиотеке Tiny4kOLED. В архиве модифицируется "font8x16.h" и он cambiado la línea 117 por el siguiente código con el fin de cambiar el símbolo ~ por ° que usaremos en ° C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Продолжение создания эскиза, необходимого для проекта.

#include #include #include #include #define I_PINB PCINT3 #define I_PIN PB3 #define I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) disable = "" adc = "" converter #define 4 #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t height = 64; volatile bool превратился = false; / * * * Обработчик прерывания * * / ISR (PCINT_VECTOR) {// прерывание всегда восстанавливается из спящего режима if (digitalRead (I_PIN) == HIGH) {Turn = true; // устанавливаем флаг для повторной перерисовки экрана}} void setup () {cli (); // выключить прерывания PCMSK | = (1 << I_PINB); ГИМСК | = (1 << PCIE); pinMode (I_PIN, ВХОД); sei (); // включаем прерывания adc_disable (); // экономия энергии выключением преобразователя set_sleep_mode (SLEEP_MODE_PWR_DOWN); // устанавливаем тип сна для глубокого сна oled.begin (width, height, sizeof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // запускаем oled-объект oled.setFont (FONT8X16); // этот шрифт выглядит лучше, чем другой drawScreen (); oled.on (); задержка (2000); dht.begin (); повернулся = правда; // флаг отрисовки экрана} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {если (повернулся) {cli (); // отключение прерываний oled.on (); float h = dht.readHumidity (); // ложное чтение для сброса задержки кэша dht (2200); // ожидание загрузки dht h = dht.readHumidity (); float t = dht.readTemperature (); float i = dht.computeHeatIndex (t, h, false); oled.setCursor (55, 1); олед.принт (т); oled.print ("~ C"); oled.setCursor (55, 3); oled.print (h, 0); oled.print ("%"); oled.setCursor (55, 5); oled.print (i); oled.print ("~ C"); // символ ~ был изменен в библиотеке, чтобы он выглядел как задержка символа ° градусов (5000); // показывать 5 секунд oled.off (); повернулся = ложь; sei (); // снова присоединяем прерывания} sleep (); // всегда засыпаем в конце} void drawScreen () {// рисует фрейм и основной текст для (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); для (uint8_t x = 0; x <128; x + = 2) {oled.sendData (0b10101010); oled.sendData (0b01010101); } oled.endData (); } oled.setCursor (0, 0); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000101, ширина - 2); oled.sendData (0b11111111); oled.endData (); для (uint8_t y = 1; y <(высота - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, ширина - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (высота - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, ширина - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Температура:"); oled.setCursor (4, 3); oled.print ("Гуд:"); oled.setCursor (4, 5); oled.print ("Сенс:"); }

Шаг 4: выводы

Выводы
Выводы
Выводы
Выводы

A pesar de su tamaño insignificante, el ATtiny85 ofrece una ampia gama de aplicaciones en las que podemos Implementar este controlador de bajo costo sin perder funcionalidad. Personalmente no esperaba que fuera posible include control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny

Существуют бесплатные библиотеки OLED. La librería GFX de Adafruit no me allowió compilar por lo que decidí buscar algo Precisamente para el ATtiny, pero existen otras librerías y soluciones que son interesantes de explorar

El consumo del dispositivo es muy bajo. Считая, что он постоянно используется, он оценивает качество заряда аккумулятора 3000 мАч (NiMH или LiIon) в течение 500 дней. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he considerado necesario

Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imageen, pero en este proyecto he obtenido un consumo mayor que соответствие al de la segunda images. El consumo de la batería Continúa siendo lo suficientemente bajo como para ser un proyecto factible

Шаг 5. Ссылки Y Lecturas Relacionados

www.technoblogy.com/show?KX0&fbclid=IwAR0qu…

github.com/SpenceKonde/ATTinyCore

www.electroschematics.com/am2302-dht22-dat…

ww1.microchip.com/downloads/en/DeviceDoc/A…

embeddedoughtts.com/2016/06/06/attiny85-i…

www.instructables.com/id/ATtiny85-Interrup…

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Рекомендуемые: