Съдържание:

Attiny85 Термометър OLED: 5 стъпки
Attiny85 Термометър OLED: 5 стъпки

Видео: Attiny85 Термометър OLED: 5 стъпки

Видео: Attiny85 Термометър OLED: 5 стъпки
Видео: ATtiny85 Project DHT21 Temperature & Humidity Sensor and SSD1306 Oled Display, Arduino IDE 2024, Декември
Anonim
Attiny85 Термометър OLED
Attiny85 Термометър OLED
Attiny85 Термометър OLED
Attiny85 Термометър OLED

Este proyecto consiste en un termómetro pequeño y simple que muestra la temperature actual, la humedad relativa y el índice de temperature. 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 x ATtiny85

1 x Arduino UNO/PRO/etc (програма за ATtiny)

1 x 128x64 пантала I2C OLED

1 x температура на сензора DHT22

1 x Resistencia 4.7MOhm (1/4W)

1 x електролитен кондензатор 0.1uF

1 x Fuente de 3.3V - 5V 10+ x джъмпери

Стъпка 1: Описване на Fun Funcionamiento

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

Най -новите програми се провеждат по следния начин: По -ниска температура -> Мострална температура в пантала -> Апагарен ATtiny -> Повторен алтернативен бутон.

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, можете да изтеглите, al parecer, автор на оригиналния файл с данни, además, necesitaremos modificarla un poco luego.

El método de reinicio puede ser tanto un botón como dos placas metálicas que se tocan para encender el equipo. En lo personal, on encontrado la opción de las placas metálicas más interactivo.

Стъпка 2: Circuitos

Circuitos
Circuitos
Circuitos
Circuitos
Circuitos
Circuitos

En la Primer Imagen е encuentra el circuito que requerimos para programar el ATtiny85. Първоначално се дебе програмира ал Arduino (ел кондензатор дебе estar desconectado) с ел скица ArduinoISP, que се encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el кондензатор за evitar que nuestro Arduino се реиницира ал програмиращ ATtiny85.

El ATtiny se puede alimentar directamente del 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 facilitar el hacer pruebas ya que la pantalla no puede estar conectada cuando se program al ATtiny.

Como se observa en las imágenes. El pin SDA del ATyiny е ел 0 и е SCL/CLK е ел 2. Nuestro DHT е свързан и свързан с щифт 4.

Стъпка 3: Програмиране

Първоначално, изберете "Arduino като ISP" като програмист. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me genener ningún problem de compilación durante la realización del proyecto.

La placa debe estar конфигурация на BOD, с еднократно 8MHz интерно и грешка OptiBoot. Ако използвате 1MHz комуникация за I2C, не можете да я поставите на 16MHz с кристално външно устройство, трябва да използвате цифрови пинове, консумирайте енергия значително.

Cabe destacar que he modificado un archivo en la librería Tiny4kOLED. El archivo modificado es "font8x16.h" y he 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

A continuación ajunto el sketch necesario para el proyecto.

#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 = "" конвертор #def #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t ширина = 128; const uint8_t височина = 64; летливи bool се обърна = невярно; / * * * Манипулатор на прекъсване * */ISR (PCINT_VECTOR) {// прекъсването винаги се възстановява от режим на заспиване, ако (digitalRead (I_PIN) == HIGH) {поверну = вярно; // отново задаваме флага за прерисуване на екрана}} void setup () {cli (); // изключване прекъсва PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // включване на прекъсвания adc_disable (); // икономия на енергия при изключване на конвертора set_sleep_mode (SLEEP_MODE_PWR_DOWN); // задаваме типа сън на дълбок сън oled.begin (ширина, височина, размер на (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // стартиране на oled обект oled.setFont (FONT8X16); // този шрифт изглежда по -добре от другия drawScreen (); oled.on (); забавяне (2000); dht.begin (); обърнато = вярно; // флаг за екран за рисуване} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (обърнато) {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 (t); 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 (); for (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 ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }

Стъпка 4: Заключения

Заключения
Заключения
Заключения
Заключения

A pesar de su tamaño insignificante, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementar este controlador de bajo costo sin perder funcionalidad. Personalmente no esperaba que fuera posible includeir el control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, ел програма е entrado en nuestro ATtiny

Съществувайте otras librerías para las pantallas OLED. La librería GFX de Adafruit не ми разрешава компилация от 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 mAh (NiMH или LiIon) и 500 дни. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, no no he he razmisrado necesario

Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto той obtenido un consumo кмет que кореспондент al de la segunda imagen. 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…

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

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Препоръчано: