Sisukord:

Attiny85 Termómetro OLED: 5 sammu
Attiny85 Termómetro OLED: 5 sammu

Video: Attiny85 Termómetro OLED: 5 sammu

Video: Attiny85 Termómetro OLED: 5 sammu
Video: Датчик температуры DS18B20. Распиновка, тестирование, подключение к Ардуино 2024, Oktoober
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 realiseerib ATmega328p -d, kuid see on huvitav, kuid see võimaldab teil kasutada ATtiny85 cuyo tamaño ja Consumo de Battery Convergen en un dispositivo pequeño y portátil.

Jätkuvalt kirjeldatakse funktsionaalsust, segatakse kõige rohkem vooluringi ja lõpetatakse see programm ja algkommentaarid sobre el proyecto en general.

Tarvikud

1 x ATtiny85

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

1 x 128x64 Pantalla I2C OLED

1 x anduri temperatuur DHT22

1 x Resistencia 4.7MOhm (1/4W)

1 x elektri kondensaator 0,1uF

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

1. samm: kirjeldus 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 aku.

Nuestro programm 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 linnapea parte del trabajo a las librerías ya pastentes, por lo que no reinventaremos la rueda. Tasuta DHT -andurite kogu Adafruit (disponible en el IDE) ja 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 isiklik, ta encontrado la opción de las placas metálicas más interactivo.

2. samm: vooluringid

Vooluringid
Vooluringid
Vooluringid
Vooluringid
Vooluringid
Vooluringid

En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Peamine Arduino programm (elkondensaator debe estar desconectado) koos eskiisiga ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar elkondensaator 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 patareid ja need vajalikud kontuurid massi (GND) del Arduino y el ATtiny85.

Colocar and botón entre el pin 13 del Arduino y el 2 del ATtiny puede hõlbustamiseks hacer pruebas ya que la pantalla no puede estar conectada cuando se programme 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. etapp: programm

Primeramente, valitud debüüdid "Arduino as ISP" on selle programmi programm. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me genero ningún problem de compilación durante la realización del proyecto.

Seadistage BOD, kasutades 8MHz intervallide ja OptiBooti heli. Kasutage 1MHz sideühendust I2C -st, es estabiilselt ja 16MHz püsivalt, kasutades digitaalseid andmesidemänge, el Consumo energético aumenta kaalub.

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 Continue ajn 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 #define DTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t laius = 128; const uint8_t kõrgus = 64; lenduv bool pööratud = vale; / * * * Katkestuste käitleja * */ISR (PCINT_VECTOR) {// katkestus taastub alati unest, kui (digitalRead (I_PIN) == HIGH) {turn = true; // pane lipp uuesti ekraanile joonistama}} void setup () {cli (); // väljalülitamine katkestab PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // katkestuste sisselülitamine adc_disable (); // säästa energiat muunduri väljalülitamine set_sleep_mode (SLEEP_MODE_PWR_DOWN); // määrake une tüübiks sügav uni. oled.begin (laius, kõrgus, suurus (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // käivita oled objekt oled.setFont (FONT8X16); // see font näeb parem välja kui teine drawScreen (); oled.on (); viivitus (2000); dht.begin (); pööratud = tõsi; // lipp ekraani joonistamiseks} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (keeratud) {cli (); // katkestuste väljalülitamine oled.on (); float h = dht.readHumidity (); // false read to reset dht cache delay (2200); // wait dht to load h = dht.readHumidity (); ujuk 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"); // sümbolit ~ muudeti raamatukogus, et see näeks välja nagu ° kraadi sümboli viivitus (5000); // näita 5 sekundit oled.off (); keeratud = vale; sei (); // manus katkestab uuesti} uni (); // mine alati magama lõpus} void drawScreen () {// joonistab raami ja põhiteksti (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); jaoks (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, laius - 2); oled.sendData (0b11111111); oled.endData (); jaoks (uint8_t y = 1; y <(kõrgus - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, laius - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (kõrgus - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, laius - 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. samm: järeldused

Järeldused
Järeldused
Järeldused
Järeldused

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 programm 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. Arvestades sellega, et ta on võimeline hindama 3000 mAh (NiMH või LiIon) akusid kuni 500 päeva. El Consumo podría redcirse aún más desconectando la pantalla y el sensor sensoramente desde un pin del ATtiny, aga seda ei saa kaaluda

Según Technoblogy.com el ATtiny puede operaator en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto obtenido un consumo linnapea que vastab al de la segunda imagen. El Consumo de la batería Continúa siendo lo soficientemente bajo como para ser un proyecto fact

Samm 5: Lingid 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

Soovitan: