INHOUDSOPGAWE:

Attiny85 Termómetro OLED: 5 stappe
Attiny85 Termómetro OLED: 5 stappe

Video: Attiny85 Termómetro OLED: 5 stappe

Video: Attiny85 Termómetro OLED: 5 stappe
Video: ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino 2024, Desember
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 facta actual, la humedad relativa y el índice de temperatura. Ons kan dit met ATmega328p realiseer, maar dit is ook moontlik om 'n versameling van ATtiny85 te gebruik om 'n konvergeerde en verwante battery te gebruik.

'N Voortgesette beskrywing van die funksionering, wat die hele kring en die finalisering van die programme en algemene kommentare in die algemeen beskryf.

Voorrade

1 x ATtiny85

1 x Arduino UNO/PRO/etc (programmeerder van ATtiny)

1 x 128x64 pantalla I2C OLED

1 x Sensortemperatuur DHT22

1 x weerstand 4.7MOhm (1/4W)

1 x kondensator electrolítico 0.1uF

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

Stap 1: Beskryf die funksie

Die doelwit is om meer as een keer na die oles te kyk, maar ons kan ook die gebruik van 'n slaapstelsel gebruik. la batería.

Nuestro programa se guiará por el siguiente proceso: Leer temperature -> Mostra temperatura en pantalla -> Apatar 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. Die biblioteek van die DHT -sensorbiblioteek van Adafruit (beskikbaar vir IDE) en Tiny4kOLED -data wat ons kan aflaai, sowel as 'n oorspronklike outeur van die oorspronklike data, verskaffers, modifikasies wat nodig is om te verander.

Ons kan ook 'n volledige weergawe van hierdie metode gebruik om met die toestel te werk. Persoonlik kan hy meer as een van die interaktiewe aspekte van die boek gebruik.

Stap 2: Circuitos

Kringbane
Kringbane
Kringbane
Kringbane
Kringbane
Kringbane

'N Laaste prentjie kan 'n omskakeling vir die kring van die program vir ATtiny85 gee. Primeramente se debe programar al Arduino (el capacitor debe estar desconectado) with el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. U kan dit ook gebruik om die kondensator van die kapasiteit vir die nuutste arduino te herken.

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.

Ons bied 'n volledige toegang tot pin 13 van Arduino en 2 van ATtiny puede fasiliteerders wat u kan gebruik om nie 'n volledige program vir ATTiny te gebruik nie.

Kom ons kyk na die beelde. El pin SDA del ATyiny es el 0 y el SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4.

Stap 3: Programmeer

Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Ons kan nie meer 'n plek vir ATtiny installeer nie, maar ek kan ook die ATtinyCore de Spence Konde installeer. Esta placa no me generó ningún problema de compilación durante la realización del proyecto.

Ons kan die BOD -konfigurasie met 'n 8MHz -interne en optiBoot -stelsel herlaai. Ons gebruik 1MHz -kommunikasie vir I2C en is moontlik om 'n 16MHz -ekstern -stelsel te gebruik, sowel as digitale funksies en energieverbruik.

Ons kan die weergawe van Tiny4kOLED verander. Die argiefmodifikasie is 'font8x16.h' en hy kan 117 keer vir die eerste keer gebruik word om die kamille te gebruik ~ vir ° que usaremos en ° C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

'N Vervolg van 'n skets wat noodsaaklik is vir 'n projekto.

#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 DHTPIN #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t breedte = 128; const uint8_t hoogte = 64; vlugtige bool gedraai = vals; / * * * Interrupt -hanteerder * */ISR (PCINT_VECTOR) {// interrupt herstel altyd uit die slaap as (digitalRead (I_PIN) == HOOG) {gedraai = waar; // stel die vlag weer in om die skerm weer te teken}} ongeldige opstelling () {cli (); // skakel onderbreek PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // skakel onderbrekings adc_disable () aan; // bespaar krag deur die omskakelaar set_sleep_mode (SLEEP_MODE_PWR_DOWN) uit te skakel; // stel die tipe slaap in op diepe slaap oled.begin (breedte, hoogte, grootte van (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // begin oled voorwerp oled.setFont (FONT8X16); // hierdie lettertipe lyk beter as die ander tekenScreen (); oled.on (); vertraging (2000); dht.begin (); gedraai = waar; // vlag vir tekenskerm} leegte slaap () {slaap_enable (); slaap_cpu (); } leemte -lus () {as (gedraai) {cli (); // skakel onderbrekings af oled.on (); float h = dht.readHumidity (); // vals lees om dht -kasvertraging (2200) terug te stel; // wag dht om h = dht.readHumidity () te laai; 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"); // die ~ simbool is verander in die biblioteek om soos 'n ° graad simboolvertraging (5000) te lyk; // wys vir 5 sekondes oled.off (); gedraai = vals; sei (); // heg weer onderbrekings aan} slaap (); // gaan slaap altyd aan die einde} void drawScreen () {// teken die raam en die hoofteks vir (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); vir (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, breedte - 2); oled.sendData (0b11111111); oled.endData (); vir (uint8_t y = 1; y <(hoogte - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, breedte - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (hoogte - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, breedte - 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:"); }

Stap 4: Gevolgtrekkings

Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings
Gevolgtrekkings

'N Belangrike insiggewendheid, van ATTiny85 of 'n groter aantal funksies vir die funksionering van die funksies. Persoonlike funksies om die beheer van pantalla en slaapprogramme in te sluit, sluit die limiete in. Dichozamente, el programa ha entrado en nuestro ATtiny

Bestaan 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 and soluciones que son interesantes de explorar

Ons verbruikers kan dit ook gebruik. Oorweeg dit om 'n normale gebruik te maak, en dit kan 'n gemiddelde skatting van 3000 mAh (NiMH o LiIon) en 500 dia's gee. Ons verbruik kan 'n vermindering van die toestand van die sensor en die aanwysing van 'n sensor in die vorm van 'n sensor inhou, maar ons moet dit nie oorweeg nie

Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera image, pero en este proyecto he obtenido en consumo burgemeester que correspondonde al de la segunda image. Die verbruik van die kontinuïteit kan op 'n werklike wyse plaasvind

Stap 5: Skakels 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

Aanbeveel: