Mục lục:

Attiny85 Termómetro OLED: 5 bước
Attiny85 Termómetro OLED: 5 bước

Video: Attiny85 Termómetro OLED: 5 bước

Video: Attiny85 Termómetro OLED: 5 bước
Video: Testing Power Supplies for LED Projects 2024, Tháng mười hai
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Este proyecto ince en un termómetro pequeño y simple que muestra la temperatura thực tế, la humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, pero loprissante de esta versión es effizar un ATtiny85 cuyo tamaño y conso de batería convertgen en un dispositivo pequeño y portátil.

Một mô tả liên tục, seguido mostraré el Circuito y finalizaré con el programma y algunos comentarios sobre el proyecto en general.

Quân nhu

1 x ATtiny85

1 x Arduino UNO / PRO / etc (programador del ATtiny)

1 x 128x64 pantalla I2C OLED

1 x Cảm biến temperatura DHT22

1 x Resistencia 4.7MOhm (1 / 4W)

1 x Tụ điện electrolítico 0,1uF

1 x Fuente de 3.3V - 5V 10+ x Jumper

Bước 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 incluido el uso de la librería sleep.he intern.h para activar el termómetro manualmente y así Reduceir el consilio para Extender la vida de la batería.

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

Para cada una de estos pasos dejaremos la thị trưởng parte del trabajo a las librerías ya tồn tại, por lo que no reventaremos la rueda. La librería DHT sensor library de Adafruit (disponible en el IDE) y Tiny4kOLED de datacute que descargaremos de Github ya que, al parecer, el autor original es datacute y, además, necesitaremos modificarla un poco luego.

El método de reinicio puede ser tanto un botón como dos eleas metálicas que se tocan para encender el equipo. En lo cá nhân, anh ta encontrado la opción de las nhauas metálicas más interactivo.

Bước 2: Circuitos

Circuitos
Circuitos
Circuitos
Circuitos
Circuitos
Circuitos

En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el tụ debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el tụ para evitar que nuestro Arduino se reinicie al programar el ATtiny85.

El ATtiny se puede alimentar directamente del Arduino. En caso de useizar 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 secureitar el hacer pruebas ya que la pantalla no puede estar conectada cuando se programma al ATtiny.

Como se Observa en las imágenes. El pin SDA del ATyiny es el 0 y el SCL / CLK es el 2. Nuestro DHT está conectado en el pin 4.

Bước 3: Programación

Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Si aún no han instalado la lasa para el ATtiny, recomiendo instalar la nhau ATtinyCore de Spence Konde. Esta sa khoáng không tôi generó ningún problemma de compilación durante la realización del proyecto.

La nhau debe estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot. Si useizamos 1MHz la comunicación bởi I2C no es estable y a 16MHz con cristal externo, además de perder dos pines digitales, el consello energygético aumenta đáng kể.

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

Một bản phác thảo liên tục ajunto el 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)) vô hiệu hóa = "" adc = "" trình chuyển đổi #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t height = 64; bool dễ bay hơi biến = false; / * * * Trình xử lý ngắt * * / ISR (PCINT_VECTOR) {// ngắt luôn phục hồi từ trạng thái ngủ nếu (digitalRead (I_PIN) == HIGH) {turn = true; // đặt cờ để vẽ lại màn hình}} void setup () {cli (); // tắt ngắt PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // bật ngắt adc_disable (); // tiết kiệm điện tắt bộ chuyển đổi set_sleep_mode (SLEEP_MODE_PWR_DOWN); // thiết lập kiểu ngủ thành deep sleep oled.begin (width, height, sizeof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // khởi động đối tượng oled oled.setFont (FONT8X16); // phông chữ này trông đẹp hơn phông chữ kia drawScreen (); oled.on (); chậm trễ (2000); dht.begin (); biến = true; // cờ để vẽ màn hình} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (quay) {cli (); // tắt ngắt oled.on (); float h = dht.readHumidity (); // false read để reset dht cache delay (2200); // đợi dht tải h = dht.readHumidity (); float t = dht.readTempe Heat (); 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"); // biểu tượng ~ đã được thay đổi trên thư viện để trông giống như biểu tượng ° độ trễ (5000); // hiển thị trong 5 giây oled.off (); biến = sai; sei (); // lại đính kèm ngắt} sleep (); // luôn chuyển sang chế độ ngủ khi kết thúc} void drawScreen () {// vẽ khung cho văn bản chính for (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); for (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, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(height - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (height - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Nhiệt độ:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }

Bước 4: Kết luận

Kết luận
Kết luận
Kết luận
Kết luận

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 incluir el control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, el programma ha entrado en nuestro ATtiny

Tồn tại otras librerías para las pantallas OLED. La librería GFX de Adafruit no me permitió tương tự như lo que decidí buscar algo prepisamente para el ATtiny, pero survivalen otras librerías y soluciones que sonprissantes de explorerar

El tiêu dùng del dispositivo es muy bajo. Considerando un uso Constante, he medido y ước tính la vida para una batería de 3000mAh (NiMH o LiIon) en 500 días. Elfilo podría Reduceirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he coirado necesario

Según Technoblogy.com el ATtiny puede operar en unmateo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido unmateo thị trưởng que tương ứng al de la segunda imagen. El conto de la batería Continúa siendo lo suficiencyemente bajo como para ser un proyecto factible

Bước 5: Liên kết Y Lecturas Relacionados

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

github.com/SpenceKonde/ATTinyCore

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

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

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

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Đề xuất: