Tartalomjegyzék:

Attiny85 Termómetro OLED: 5 lépés
Attiny85 Termómetro OLED: 5 lépés

Videó: Attiny85 Termómetro OLED: 5 lépés

Videó: Attiny85 Termómetro OLED: 5 lépés
Videó: ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino 2024, December
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 aktual, la humedad relativa y el índice de temperatura. Puede realizálja az ATmega328p -t, de érdekli az esta versión és hasznosítja az ATtiny85 cuyo tamaño és Consumo de batería convergen en un dispositivo pequeño y portátil.

A folytonos leírás el funcionamiento, seguido mostraré el circuitito y finalizaré con el program y algunos comentarios sobre el proyecto en general.

Kellékek

1 x ATtiny85

1 x Arduino UNO/PRO/etc (ATtiny programozó)

1 x 128x64 méretű I2C OLED nadrág

1 x DHT22 érzékelő hőmérséklet

1 x Resistencia 4.7MOhm (1/4W)

1 x 0.1uF elektromos kondenzátor

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

1. lépés: 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 interrupt.h para activar el termómetro manualmente y así reducir el consumo para extender la vida de la batería.

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

Para cada uno de estos pasos dejaremos la polgármester parte del trabajo a las librerías ya létező, por lo que no reinventaremos la rueda. Ingyenes DHT szenzortár 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 placas metálicas que se tocan para encender el equipo. En lo personal, ő encontrado la opción de las placas metálicas más interactivo.

2. lépés: Áramkörök

Circuitos
Circuitos
Circuitos
Circuitos
Circuitos
Circuitos

En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Arduino Primeramente se debe programar (elkondenzátor debe estar desconectado) az ArduinoISP vázlata, az archívumok -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar elkondenzátor 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 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 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. lépés: Programozás

A legfontosabb, hogy a "Arduino as ISP" programcsomagban szerepel. 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.

Állítsa be a BOD konfigurációját, és válassza ki a 8MHz -es interno és az OptiBoot funkciót. Használja az 1MHz -es kommunikációt az I2C -n, nem estabilis és 16MHz -es külső kristályokkal, además de perder dos pines digitales, el consumo energético aumenta arvestrablemente.

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 = "" converter #deINDHTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t magasság = 64; illékony bool fordult = hamis; / * * * Megszakításkezelő * */ISR (PCINT_VECTOR) {// a megszakítás mindig helyreáll alvó állapotból, ha (digitalRead (I_PIN) == HIGH) {turn = true; // állítsa a zászlót a képernyő újrarajzolására}} void setup () {cli (); // kikapcsolás megszakítja PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // megszakítások bekapcsolása adc_disable (); // energiatakarékosság az átalakító kikapcsolása set_sleep_mode (SLEEP_MODE_PWR_DOWN); // állítsa az alvás típusát mély alvásra. oled.begin (szélesség, magasság, méret (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // start oled objektum oled.setFont (FONT8X16); // ez a betűtípus jobban néz ki, mint a másik drawScreen (); oled.on (); késleltetés (2000); dht.begin (); fordult = igaz; // zászló a képernyő rajzolásához} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (megfordult) {cli (); // kikapcsolja a megszakításokat oled.on (); float h = dht.readHumidity (); // false read to dht cache delay (2200); // wait dht to load 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"); // a ~ szimbólum a könyvtárban úgy változott, hogy ° fokos jelkésleltetésre hasonlítson (5000); // mutat 5 másodpercig oled.off (); fordult = hamis; sei (); // ismét csatolja a megszakításokat} sleep (); // mindig aludjon a végén} void drawScreen () {// megrajzolja a keretet és a fő szöveget (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, szélesség - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(magasság - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, szélesség - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (magasság - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, szélesség - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Hőmérséklet:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }

4. lépés: Következtetések

Következtetések
Következtetések
Következtetések
Következtetések

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 program ha entrado en nuestro ATtiny

Existen otras librerías para las pantallas OLED. A Librería GFX de Adafruit no me permitió összeveti a lo que decidí buscar algo precisamente para el ATtiny, de ha létezik otras librerías y soluciones que son interesantes de explorar

El consumo del dispositivo es muy bajo. Figyelembe véve az állandó kényelmetlenséget, 3000 mAh (NiMH vagy LiIon) és 500 díjazású akkumulátorokkal rendelkezik. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, de nem kell számítani rá

Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consumo polgármester que megfelel al de la segunda imagen. El Consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible

5. lépés: Linkek 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…

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

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Ajánlott: