Satura rādītājs:

Attiny85 Termómetro OLED: 5 soļi
Attiny85 Termómetro OLED: 5 soļi

Video: Attiny85 Termómetro OLED: 5 soļi

Video: Attiny85 Termómetro OLED: 5 soļi
Video: Attiny85 документация 2024, Decembris
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 real, la humedad relativa y el índice de temperatura. Tas palīdz realizēt ATmega328p, bet tas ir interesants, lai to varētu izmantot un izmantot ATtiny85 cuyo tamaño y Consumo de batería convergen en un dispositivo pequeño y portátil.

Nepārtraukts apraksts par funkcionālo darbību, sekojošā visaptverošā shēma un galīgā programma, kas paredzēta programmas un algoritmu komentāriem.

Piegādes

1 x ATtiny85

1 x Arduino UNO/PRO/etc (ATtiny programma)

1 x 128 x 64 izmēra panelis I2C OLED

1 x sensora temperatūra DHT22

1 x pretestība 4.7MOhm (1/4W)

1 x elektriskais kondensators 0.1uF

1 x Fuente de 3.3V - 5V 10+ x džemperi

1. darbība. Apraksts 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 interrupt.h para activar el termómetro manualmente y así reducir el consumo para extender la vida de la baterija.

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

Para cada uno de estos pasos dejaremos la mērs parte del trabajo a las librerías ya egzistē, por lo que no reinventaremos la rueda. Bezmaksas DHT sensoru bibliotēka Adafruit (disponible en el IDE) y Tiny4kOLED de datacute que descargaremos de Github ya que, al parecer, el original original es datacute y, 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 personiski, viņš encontrado la opción de las placas metálicas más interactivo.

2. solis: ķēdes

Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes
Ķēdes

En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Primerdente se debe programar al Arduino (elkondensators debe estar desconectado) ar skici ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el kondensators para evitar que nuestro Arduino se reinicie al programar el ATtiny85.

El ATtiny se puede alimentar directamente del Arduino. En caso de utilizar una fuente de poder como una battery and need necedario 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 facilititar 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 es el 0 y el SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4.

3. darbība. Programación

Galvenais, izlases programmas "Arduino as ISP" pirmais programmas vadītājs. 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 problem de compilación durante la realización del proyecto.

La Placa debe estar konfigurē BOD, izmantojot 8MHz intervālu un optiBoot. Izmantojiet 1MHz saziņu no I2C, un tas nav pieejams 16MHz ārējā kristālā, además de perder dos pines digitalles, el consumo energético aumenta apsver.

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

Nepieciešama nepārtraukta darbība ar skici, kas nepieciešama 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 = "" converter #define DTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t platums = 128; const uint8_t augstums = 64; gaistošs bols pagriezts = nepatiess; / * * * Pārtraukuma apstrādātājs * */ISR (PCINT_VECTOR) {// pārtraukums vienmēr atgūstas no miega, ja (digitalRead (I_PIN) == HIGH) {pagriezts = true; // atkal iestatīt karodziņu, lai pārzīmētu ekrānu}} void setup () {cli (); // izslēgt pārtrauc PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // ieslēgt pārtraukumus adc_disable (); // taupīt enerģiju, izslēdzot pārveidotāju set_sleep_mode (SLEEP_MODE_PWR_DOWN); // iestatiet miega veidu uz dziļo miegu. // start esi objekts oled.setFont (FONT8X16); // šis fonts izskatās labāk nekā otrs drawScreen (); oled.on (); kavēšanās (2000); dht.begin (); pagriezts = taisnība; // karogs ekrāna zīmēšanai} void sleep () {sleep_enable (); miega_cpu (); } void loop () {if (pagriezts) {cli (); // izslēgt pārtraukumus oled.on (); float h = dht.readHumidity (); // false read to reset dht cache delay (2200); // wait dht to load h = dht.readHumidity (); pludiņš t = dht.readTemperature (); pludiņš 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"); // bibliotēkā tika mainīts simbols ~, lai tas izskatītos kā ° grādu simbola aizkave (5000); // rādīt 5 sekundes oled.off (); pagriezts = nepatiess; sei (); // atkal pievienojiet pārtraukumus} miega (); // beigās vienmēr iet gulēt} void drawScreen () {// uzzīmē rāmi un galveno tekstu (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); par (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, platums - 2); oled.sendData (0b11111111); oled.endData (); par (uint8_t y = 1; y <(augstums - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, platums - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (augstums - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, platums - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Temp:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }

4. solis: Secinājumi

Secinājumi
Secinājumi
Secinājumi
Secinājumi

A pesar de su tamaño nenozīmīgs, 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

Existen otras librerías para las pantallas OLED. La Librería GFX de Adafruit no me permitió compilar por lo que decidí buscar algo precisamente para el ATtiny, pero existen otras librerías y soluciones que son interesantes de explorera

El consumo del dispositivo es muy bajo. Ņemot vērā to, ka viņš nemainās, viņš izmanto vidējo un aprēķināto 3000 mAh akumulatoru (NiMH vai LiIon) un 500 dienas. El Consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, bet ne lo he apsvērumu nepieciešamība

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 mērs que atbilst al de la segunda imagen. El Consumo de la batería Continúa siendo lo suficientemente bajo como para ser un proyecto factible

5. solis: saites un lekcijas 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…

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

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Ieteicams: