Satura rādītājs:
- Piegādes
- 1. darbība. Apraksts Del Funcionamiento
- 2. solis: ķēdes
- 3. darbība. Programación
- 4. solis: Secinājumi
- 5. solis: saites un lekcijas Relacionados
Video: Attiny85 Termómetro OLED: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
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
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
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:
Lielāka un uzlabota Ziemassvētku zvaigzne Neopixel Attiny85: 3 soļi (ar attēliem)
Lielāka un uzlabota Ziemassvētku zvaigzne Neopixel Attiny85: Pagājušajā gadā es izveidoju nelielu 3D drukātu Ziemassvētku zvaigzni, skatiet vietni https://www.instructables.com/id/Christmas-Star-LE..Šogad es izveidoju lielāku zvaigzni no pavediena no 50 neopikseļiem (5V WS2811). Šai lielākajai zvaigznei bija vairāk rakstu (es joprojām pievienoju un uzlaboju
Akumulatora enerģijas patēriņa samazināšana Digispark ATtiny85: 7 soļi
Akumulatora enerģijas patēriņa samazināšana Digispark ATtiny85: vai: 2 gadus darbiniet Arduino ar 2032. gada monētu elementu. Izmantojot Digispark Arduino dēli no kastes ar Arduino programmu, tas patērē 20 mA pie 5 voltiem. Ar 5 voltu jaudas banku 2000 mAh tas darbosies tikai 4 dienas
ATtiny85 valkājamo vibrējošo aktivitāšu izsekošanas pulkstenis un programmēšana ATtiny85 ar Arduino Uno: 4 soļi (ar attēliem)
ATtiny85 valkājamo vibrējošo aktivitāšu izsekošanas pulkstenis un programmēšana ATtiny85 ar Arduino Uno: Kā izveidot valkājamu aktivitāšu izsekošanas pulksteni? Šis ir valkājams sīkrīks, kas paredzēts vibrācijai, konstatējot stagnāciju. Vai jūs lielāko daļu laika pavadāt pie datora tāpat kā es? Vai jūs sēdējat stundām ilgi, nemanot? Tad šī ierīce ir f
Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)
Flappy Bird ATtiny85 un OLED displejā SSD1306: Sveiki visi! Šodien es jums parādīšu pamata putnu putnu klonu, ko es izveidoju, un kā jūs varat izveidot līdzīgu spēli. Es būtībā kopā ar jums izskatīšu savu kodu un paskaidrošu, kā tas darbojas. Šī spēle ir veidota, lai sagrautu
Vizītkarte/spēļu konsole: ATtiny85 un OLED ekrāns: 5 soļi (ar attēliem)
Vizītkarte/spēļu konsole: ATtiny85 un OLED ekrāns: Sveiki! Šodien es jums parādīšu, kā jūs varat izveidot savu vizītkarti/spēļu konsoli/jebko, ko varat iedomāties un kurā ir aizmugurgaismots I2C OLED displejs un ATtiny85 mikroprocesors. Šajā pamācībā es jums pastāstīšu, kā manis izstrādātais PCB