Orodha ya maudhui:

Attiny85 Termómetro OLED: Hatua 5
Attiny85 Termómetro OLED: Hatua 5

Video: Attiny85 Termómetro OLED: Hatua 5

Video: Attiny85 Termómetro OLED: Hatua 5
Video: Как использовать LM35 для измерения температуры в градусах Цельсия, Фаренгейта и Кельвина 2024, Desemba
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Hesabu hii inajumuisha muda mfupi tu na njia rahisi ya kufanya kazi kwa kweli, kwa sababu ya habari zaidi na maoni ya watu. 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.

Maelezo yanayoendelea ya kujifurahisha, ambayo yanaweza kutekelezwa kwa mzunguko wa mwisho na kukamilisha mpango wa jumla wa vyuo vikuu kwa ujumla.

Vifaa

1 x Mchanganyiko85

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

1 x 128x64 pantalla I2C OLED

1 x Sensorer temperatura DHT22

1 x Resistencia 4.7MOhm (1 / 4W)

1 x Capacitor umeme 0.1uF

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

Hatua ya 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 interrupt.h para activar el termómetro manualmente y así reducir el consumo for extender la vida de la bateriya.

Programu ya hivi karibuni inaweza kutekelezwa hivi karibuni: Maadili ya juu -> Zaidi ya hali ya juu -> Apagar ATtiny -> Reiniciar al presionar botón.

Para cada uno de estos pasos dejaremos la meya parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. Maktaba ya sensorer ya DHT ya bure ya Adafruit (inayoweza kutolewa kwa IDE) na Tiny4kOLED ya data inayotokana na Github ya kila siku, kumbukumbu, msingi wa data, idema, necesitaremos modificarla un poco luego.

El método de reinicio puede ser tanto un boton como dos placas metálicas que se tocan para encender el equipo. Kwa kibinafsi, yeye hujiunga na operesheni ya las placas metálicas más interactivo.

Hatua ya 2: Circuitos

Mizunguko
Mizunguko
Mizunguko
Mizunguko
Mizunguko
Mizunguko

Katika picha ya kwanza inaweza kujumuishwa kwa mahitaji ya programu ya ATtiny85. Primeramente se debe programar al Arduino (el capacitor debe estonctado) con sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vecho heo este sebe colocar el capacitor for evitar que nuestro Arduino se reinicie al programar el ATtiny85.

El ATtiny se puede alimentar directamente del Arduino. Kwa hivyo utumiaji wa utaftaji wa habari zaidi unaweza kuwa na dhamana ya hali ya juu (GND) del Arduino na el ATtiny85.

Colocar un boton entre el pin 13 del Arduino y el 2 del ATtiny puede facilitar el hacer pruebas of que la pantalla no puede estar conectada cuando se programama al ATtiny.

Como se observa en las kuvat Pini ya SDA del ATyiny es el 0 y el SCL / CLK es el 2. Nuestro DHT inajumuisha mkutano wa 4.

Hatua ya 3: Programación

Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me generonaing to the problema of the compilación durante la realización del proyecto.

Kwa sababu ya kusanidi sanamu ya BOD, unaweza kutumia 8MHz kwa OptiBoot ya ndani. Utumiaji wa 1MHz kwa njia ya mawasiliano kwa I2C haitafahamika kama 16MHz kwa nje, ambayo inaweza kutekelezwa kwa kila siku, kwa sababu inawezeshwa na serikali.

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

Muendelezo wa ajunto el sketch necesario para el proyecto.

#jumuisha # pamoja na # pamoja # #jumlisha #fafanua I_PINB PCINT3 #fafanua I_PIN PB3 #fafanua I_VECTOR PCINT0_vect #fafanua adc_disable () (ADCSRA & = ~ (1 << aden)) Disable = "" adc = "" converter #fafanua DHTPIN 4 #fafanua DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t upana = 128; urefu uint8_t = 64; bool tete imegeuka = uwongo; / * * * Kidhibiti cha kukatiza * * / ISR (PCINT_VECTOR) {// kukatiza kila wakati hupona kutoka kwa usingizi ikiwa (digitalRead (I_PIN) == JUU) {turned = true; // weka bendera kuchora tena skrini}} usanidi batili () {ehl (); // kuzima hukatisha PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); jinsi (); // kuwasha kukatiza adc_disable (); // kuokoa nguvu kuzima kigeuzi set_sleep_mode (SLEEP_MODE_PWR_DOWN); // weka aina ya usingizi kwa usingizi mzito oled. kuanza (upana, urefu, saizi ya (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // kuanza kitu kilichopakwa oled.setFont (FONT8X16); // font hii inaonekana bora kuliko ile nyingine ya kutekaScreen (); oled juu ya (); kuchelewa (2000); kuanza (); akageuka = kweli; // bendera ya kuchora skrini} usingizi batili () {sleep_enable (); lala_cpu (); } kitanzi batili () {ikiwa (imegeuzwa) {ehl (); // kuzima hukatiza oled. kwenye (); kuelea h = dht.readHumidity (); // kusoma kwa uwongo kuweka upya ucheleweshaji wa cache ya dht (2200); // subiri dht kupakia h = dht.readHumidity (); kuelea t = dht. soma Joto (); kuelea i = dht.computeHeatIndex (t, h, uwongo); Mshale uliowekwa oled (55, 1); alama ya oled (t); alama ya oled ("~ C"); Mshale uliowekwa oled (55, 3); alama ya oled (h, 0); alama ya oled ("%"); Mshale uliowekwa oled (55, 5); alama ya oled (i); alama ya oled ("~ C"); // alama ilibadilishwa kwenye maktaba ili kuonekana kama kucheleweshwa kwa alama ya digrii (5000); // onyesha kwa sekunde 5 oled.off (); akageuka = uongo; sei (); // ambatisha hukatiza tena} kulala (); // daima nenda kulala mwisho} batili DrawScreen () {// inachora fremu maandishi kuu ya (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); kuanzaData (); kwa (uint8_t x = 0; x <128; x + = 2) {oled.sendData (0b10101010); oled.sendData (0b01010101); } oled.endData (); } oled.setCursor (0, 0); kuanzaData (); oled.sendData (0b11111111); oled.repeatData (0b00000101, upana - 2); oled.sendData (0b11111111); oled.endData (); kwa (uint8_t y = 1; y <(urefu - 8) / 8; y ++) {oled.setCursor (0, y); kuanzaData (); oled.sendData (0b11111111); oled. kurudiaData (0b00000000, upana - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (urefu - 8) / 8); kuanzaData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, upana - 2); oled.sendData (0b11111111); oled.endData (); Mshale uliowekwa oled (4, 1); alama ya oled ("Temp:"); Mshale uliowekwa oled (4, 3); alama ya oled ("Hum:"); Mshale uliowekwa oled (4, 5); alama ya oled ("Sens:"); }

Hatua ya 4: Hitimisho

Hitimisho
Hitimisho
Hitimisho
Hitimisho

Pesar de su tamaño insignificante, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementar of this controlador de bajo costo sin perder funcionalidad. Utu wa kibinafsi hautafahamika kuwa na uwezo wa kudhibiti uwezo wa kudhibiti usingizi wa kulala kwa watu wanaopenda kulala. Dichozamente, el programama ha entrado en nuestro ATtiny

Zipo otras librerías para las pantallas OLED. La librería GFX de Adafruit no me permitió comparing for this que decidí buscar algo precisamente for the ATTiny, kwa sasa kuna mambo yote yatakayowezekana kutafutwa kwa watafiti

El consumo del dispositivo es muy bajo. Thinkando un uso constante, he medido y estimado la vida para una batería de 3000mAh (NiMH o LiIon) en 500 días. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he considerado necesario

Según Technoblogy.com in ATTiny puede operar en un consumo tan bajo como el mostrado en the primera image, pero it este proocto he obtenido un consumo meor que corresponde al de la segunda imagen. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto ukweli

Hatua ya 5: Viungo 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…

embedded Thoughts.com/2016/06/06/attiny85-i…

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Ilipendekeza: