Sadržaj:
- Supplies
- Korak 1: Opis Del Funcionamiento
- Korak 2: Circuitos
- Korak 3: Programiranje
- Korak 4: Zaključci
- Korak 5: Linkovi Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Este proyecto consiste en term termómetro pequeño y simple que muestra la temperature, la humedad relativa y el índice de temperature. Puede je realiziran s ATmega328p, ali interesantna verzija ove verzije može se upotrijebiti na ATtiny85, što znači da se potrošnja baterija konvergira i odlaže pequeño i portátil.
Kontinuirani opis funkcije, funkcionisanja, seguido mostraré el circuito i finalizacije programa i programa algunos comentarios sobre el proyecto općenito.
Supplies
1 x ATtiny85
1 x Arduino UNO/PRO/etc (program za ATtiny)
1 x 128x64 pantalona I2C OLED
1 x Temperatura senzora DHT22
1 x Resistencia 4.7MOhm (1/4W)
1 x elektronički kondenzator 0,1uF
1 x Fuente de 3.3V - 5V 10+ x kratkospojnici
Korak 1: Opis 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 za aktivaciju termina, ručno rukovanje i smanjenje potrošnje za proširenje la vida de la batería.
Novi programi se provjeravaju prema sljedećoj proceduri: Najniža temperatura -> Najniža temperatura u cijelosti -> Apagarski ATtiny -> Ponovno aktivirajte predsjednički boton.
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. Librería DHT senzorska biblioteka iz Adafruit -a (dostupno u IDE -u) i Tiny4kOLED za podatke koje je potrebno preuzeti u Github -u, al -paracer, autor originalnih podataka, 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. Lično, on je potpisao opción de las placas metálicas más interactivo.
Korak 2: Circuitos
En lajmer imagen je uključen u cirkulaciju sa zahtjevima za programiranje ATtiny85. Primarno je debelo programirano u Arduinu (el. Kondenzator je isključen) s skicom ArduinoISP, koja se nalazi u Arhivu -> Ejemplos -> 11. ArduinoISP. Ne možete odabrati kolor kondenzator koji bi trebao pokrenuti Arduino ako se programira u 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 and el 2 del ATtiny puede facilitator el hacer pruebas ye que la pantalla no puede estar conectada cuando se programa al ATtiny.
Como se observa en las imágenes. El pin SDA del ATyiny je 0 ili SCL/CLK es 2. Nuestro DHT je povezan na pin 4.
Korak 3: Programiranje
Primarno, odaberite "Arduino kao ISP" kao program. Ako niste instalirali placa za ATtiny, preporučite instalaciju za ATtinyCore de Spence Konde. Esta placa no generira ningún problem de compilación durante la realización del proyecto.
La placa debe estar konfiguracija je u BOD -u, sa relojnom frekvencijom od 8 MHz interno u OptiBoot -u. Ako koristite 1MHz za komunikaciju na I2C, nije moguće podesiti na 16 MHz sa kristalnim vanjskim priključkom, ako je potrebno digitalne signale, a potrošnja energije je značajna.
Destacar je promijenio i arhivirao i oslobodio Tiny4kOLED. Arhiva je promijenila "font8x16.h" u kambijadu na liniji 117 nakon signalizacije kodiga s perom u kambiru na simbolu ~ prema ° usaremos na ° C.
0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
A Continuoción ajunto el skica 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 = "" pretvarač #def #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t visina = 64; isparljiva bool okrenuta = netačno; / * * * Rukovalac prekida * */ISR (PCINT_VECTOR) {// prekid se uvijek oporavlja od stanja spavanja ako (digitalRead (I_PIN) == HIGH) {turn = true; // ponovo postaviti zastavicu za ponovno iscrtavanje ekrana}} void setup () {cli (); // isključuje prekide PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // uključi prekide adc_disable (); // ušteda energije isključivanjem pretvarača set_sleep_mode (SLEEP_MODE_PWR_DOWN); // postavljamo tip sna na duboki san oled.begin (širina, visina, veličinaof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // pokretanje oled objekta oled.setFont (FONT8X16); // ovaj font izgleda bolje od drugog drawScreen (); oled.on (); kašnjenje (2000); dht.begin (); okrenuto = tačno; // zastavica za crtanje ekrana} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (okrenuto) {cli (); // isključuje prekide oled.on (); float h = dht.readHumidity (); // lažno čitanje za poništavanje kašnjenja dht keša (2200); // čekanje dht za učitavanje 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"); // simbol ~ je promijenjen u biblioteci da izgleda kao kašnjenje simbola ° stepena (5000); // prikazuje 5 sekundi oled.off (); okrenuto = netačno; sei (); // ponovo priloži prekide} sleep (); // uvijek idite na spavanje na kraju} void drawScreen () {// iscrtava okvir i glavni tekst za (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); za (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, širina - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(visina - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, širina - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (visina - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, širina - 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:"); }
Korak 4: Zaključci
Pesar de su tamaño insignificante, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementator este controlador de bajo costo sinerder funcionalidad. Personalmente no esperaba que fuera posible including en el control de pantalla and sleep sleep juntos debido a las limitaciones de memoria. Dihozamente, program je uključen u novu ATtiny
Postojite otras librerías para las pantallas OLED. La Librería GFX iz Adafruit -a ne dopušta mi kompilaciju ako odlučite da autobus odlučuje o ATtiny -u, ali postoji ili da librerije i rješenja budu interesantni za istraživanje
El consumo del dispositivo es muy bajo. Uzimajući u obzir konstantu, on medido i procjenjuje vid za para baterije od 3000 mAh (NiMH ili LiLion) i 500 dana. Potrošnja se može smanjiti ako se poveže senzor sa senzorom koji se usmjerava prema pin -u ATtiny, ali ne i razmatra
Según Technoblogy.com el ATtiny operater operater un uncumo tan bajo como el mostrado en la primera imagen, pero en este proyecto obtenido un consumo Mayor que dopisuje al de la segunda imagen. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
Korak 5: Linkovi 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…
embeddedoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Preporučuje se:
Veća i poboljšana božićna zvijezda Neopixel Attiny85: 3 koraka (sa slikama)
Veća i poboljšana božićna zvijezda Neopixel Attiny85: Prošle godine sam napravio malu 3D štampanu božićnu zvijezdu, pogledajte https://www.instructables.com/id/Christmas-Star-LE … Ove godine sam napravio veću zvijezdu od pramena od 50 neopiksela (5V WS2811). Ova veća zvijezda imala je više uzoraka (još uvijek dodajem i poboljšavam
Smanjenje potrošnje energije baterije za Digispark ATtiny85: 7 koraka
Smanjivanje potrošnje energije baterije za Digispark ATtiny85: ili: Pokretanje Arduina s ćelijom od 2032 novčanice 2 godine. Korištenjem vaše Digispark Arduino ploče iz kutije s programom Arduino crpi 20 mA na 5 volti. Sa baterijom od 5 volti od 2000 mAh radiće samo 4 dana
ATtiny85 Praćenje nosivih vibracionih aktivnosti i programiranje ATtiny85 sa Arduino Uno: 4 koraka (sa slikama)
ATtiny85 Sat za praćenje i programiranje nosivih vibracionih aktivnosti i praćenje ATtiny85 sa Arduino Uno: Kako napraviti sat za praćenje nosivih aktivnosti? Ovo je nosivi gadget dizajniran da vibrira kada otkrije stagnaciju. Provodite li većinu vremena na računaru poput mene? Sjedite li satima, a da toga niste svjesni? Tada je ovaj uređaj f
Flappy Bird na ATtiny85 i OLED ekranu SSD1306: 6 koraka (sa slikama)
Flappy Bird na ATtiny85 i OLED zaslonu SSD1306: Hej svima, Danas ću vam pokazati osnovni klon flappy bird koji sam stvorio i kako možete napraviti sličnu igru. U suštini ću s vama proći kroz svoj kôd i objasniti kako to funkcionira na svakom koraku. Ova igra je napravljena da ru
Poslovna kartica/igraća konzola: ATtiny85 i OLED ekran: 5 koraka (sa slikama)
Poslovna kartica/igraća konzola: ATtiny85 i OLED ekran: Zdravo svima! Danas ću vam pokazati kako možete izgraditi vlastitu posjetnicu/konzolu za igre/šta god zamislite, a ima I2C OLED ekran sa pozadinskim osvjetljenjem i mikroprocesor ATtiny85. U ovom uputstvu ću vam reći kako je PCB koji sam dizajnirao