Բովանդակություն:

Attiny85 Termómetro OLED ՝ 5 քայլ
Attiny85 Termómetro OLED ՝ 5 քայլ

Video: Attiny85 Termómetro OLED ՝ 5 քայլ

Video: Attiny85 Termómetro OLED ՝ 5 քայլ
Video: Այս ուտեստը դուք կպատրաստեք ամեն օր։ Հյութալի պերուական հավ. Բաղադրատոմսը 2024, Դեկտեմբեր
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Este proyecto- ն բաղկացած է տերմինների չափման և պարզ ջերմաստիճանի իրական ջերմաստիճանից, որը վերաբերում է ջերմաստիճանի բարձրացմանը: Puede realizarse con un ATmega328p, pero lo interesante de esta versión is utilizar un ATtiny85 cuyo tamaño y konsumo de batería convergen en un dispositivo pequeño y portátil.

Շարունակությունը նկարագրում է իր գործառույթները, ընտրում է շրջանառության և վերջնական ծրագրի ընդհանուր ծրագրերը:

Պարագաներ

1 x ATtiny85

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

1 x 128x64 pantalla I2C OLED

1 x Սենսորային ջերմաստիճան DHT22

1 x Resistencia 4.7MOhm (1/4W)

1 x կոնդենսատորի էլեկտրոլիտիկ 0.1uF

1 x Fuente de 3.3V - 5V 10+ x Թռիչք

Քայլ 1: 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 սպառման para երկարացում լա բատերիա:

Արագ ջերմաստիճանի ռեժիմ -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón:

Para cada uno de estos pasos dejaremos la Mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. Անվճար DHT տվիչների գրադարան Adafruit (disponible en el IDE) և Tiny4kOLED տվյալների հավաքածու, որոնք անհրաժեշտ են Github ya que descargaremos, ինչպես նաև տվյալների փոխանցման սկզբնական աղբյուրի, ինչպես նաև անհրաժեշտության 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. Անձնական առումով, նա գաղտնի է պահպանում իր գործակցության տարբերակները:

Քայլ 2: Շրջաններ

Շրջաններ
Շրջաններ
Շրջաններ
Շրջաններ
Շրջաններ
Շրջաններ

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

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

Como se observva 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: aciրագրավորում

Պրեմիերա, «Arduino as ISP» ընտրանի, որը ծրագրավորող է: Si aún no han instalado la placa para el ATtiny, խորհուրդ ենք տալիս տեղադրել instalar la placa ATtinyCore de Spence Konde: Esta placa no me generó ningún problema de compilación durante la realización del proyecto.

Տեղադրեք այն մեղավոր BOD- ի կարգավորումը, միացրեք 8MHz միջերեսը և OptiBoot- ը: I2C- ի միջոցով չօգտագործվող 1 ՄՀց արագությամբ և 16 ՄՀց հաճախականությամբ օգտագործվում են թվային թվեր, սպառողական էներգիայի զգալի աղբյուրներ:

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

Շարունակական շարունակություն, որն անհրաժեշտ է նախնական նախագծի համար:

#ներառել #ներառել #ներառել #ներառել #սահմանել I_PINB PCINT3 #սահմանել I_PIN PB3 #սահմանել I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) անջատել = "" adc = "" փոխարկիչ #" #սահմանել DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t լայնություն = 128; const uint8_t բարձրություն = 64; ցնդող բուլը վերածվեց = կեղծ; / * * * Ընդհատումների կառավարիչ * */ISR (PCINT_VECTOR) {// ընդհատումը միշտ վերականգնվում է քունից, եթե (digitalRead (I_PIN) == HIGH) {turn = true; // դրոշը նորից էկրան վերագծելու համար}} void setup () {cli (); // անջատել ընդհատումները PCMSK | = (1 << I_PINB]; GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // միացնել ընդհատումները adc_disable (); // խնայել էներգիան ՝ անջատիչ փոխարկիչ set_sleep_mode (SLEEP_MODE_PWR_DOWN); // քնի տեսակը սահմանել խոր քուն oled.begin (լայնություն, բարձրություն, չափս (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // սկսել oled.setFont օբյեկտը (FONT8X16); // այս տառատեսակն ավելի լավ տեսք ունի, քան մյուսը drawScreen (); oled.on (); ուշացում (2000); dht.begin (); շրջվեց = ճշմարիտ; // էկրան նկարելու դրոշակ} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (turn) {cli (); // անջատել ընդհատումները oled.on (); float h = dht.readHumidity (); // կեղծ ընթերցում dht քեշի հետաձգումը վերականգնելու համար (2200); // սպասեք dht բեռնել 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 (ժ, 0); oled.print ("%"); oled.setCursor (55, 5); oled.print (i); oled.print («~ C»); // գրադարանի վրա ~ խորհրդանիշը փոխվել է ° աստիճանի խորհրդանիշի ուշացման (5000); // ցույց տալ 5 վայրկյան oled.off (); շրջված = կեղծ; sei (); // կցել նորից ընդհատումներ} քուն (); // միշտ քնել վերջում} void drawScreen () {// նկարում է շրջանակը որպես հիմնական տեքստ (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); համար (uint8_t x = 0; x <128; x += 2) {oled.sendData (0b10101010); oled.send Տվյալներ (0b01010101); } oled.endData (); } oled.setCursor (0, 0); oled.startData (); oled.send Տվյալներ (0b11111111); oled.repeatData (0b00000101, լայնությունը `2); oled.send Տվյալներ (0b11111111); oled.endData (); համար (uint8_t y = 1; y <(բարձրություն - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.send Տվյալներ (0b11111111); oled.repeatData (0b00000000, լայնությունը `2); oled.send Տվյալներ (0b11111111); oled.endData (); } oled.setCursor (0, (բարձրությունը `8) / 8); oled.startData (); oled.send Տվյալներ (0b11111111); oled.repeatData (0b10100000, լայնությունը `2); oled.send Տվյալներ (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print («Տեմպ.»); oled.setCursor (4, 3); oled.print («Հոմ.»); oled.setCursor (4, 5); oled.print («ensգայարաններ»); }

Քայլ 4: Եզրակացություններ

Եզրակացություններ
Եզրակացություններ
Եզրակացություններ
Եզրակացություններ

A pesar de su tamaño աննշան, 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 քունտոիդ դեբիդո a las limitaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny:

Գոյություն ունեն ազատ ձկնատեսակներ OLED: Անվճար GFX de Adafruit no me թույլտվություն է տալիս, որպեսզի որոշեմ buscar algo precisamente para el ATtiny, pero existen otras librerías y soluciones que son interesantes de explorerar

El Consumo del dispositivo es muy bajo. Հաշվի առնելով մեր մշտական մակարդակը, նա կարող է գնահատել 3000 մԱհ (NiMH o LiIon) մարտկոցը ՝ 500 օրում: El Consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, բայց ոչ lo նա հաշվի է առնում անհրաժեշտությունը:

Según Technoblogy.com el ATtiny puede օպերատոր en un konsumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un սպառo քաղաքապետի նամակագրության մեջ, որը համապատասխանում է դե լեգենդա պատկերին: El Consumo de la batería Continúa siendo lo suficientemente bajo como para ser un proyecto factible:

Քայլ 5. Հղումներ Y Lecturas Relacionados

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

github.com/SpenceKonde/ATTinyCore

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

ww1.microchip.com/downloads/hy/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

Խորհուրդ ենք տալիս: