Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Descripción Del Funcionamiento
- Vaihe 2: Piirit
- Vaihe 3: Ohjelmointi
- Vaihe 4: Johtopäätökset
- Vaihe 5: Linkit Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Este proyecto consiste en un termómetro pequeño y simple que muestra la Temperatura aktual, la humedad relativa y el índice de temperatura. Puede toteuttaa ATmega328p: n, mutta se on kiinnostava esta -versiosta ja hyödyntämisestä ATtiny85 cuyo tamaño y Consumo de batería convergen en un dispositivo pequeño y portátil.
Jatkuva kuvaus toiminnon toiminnasta, sekoitus enimmäispiiristä ja viimeistelystä ohjelmassa ja alunperin kommentoimalla yleistä yleistä ohjelmaa.
Tarvikkeet
1 x ATtiny85
1 x Arduino UNO/PRO/etc (ohjelmoija del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Anturin lämpötila DHT22
1 x Resistencia 4.7MOhm (1/4W)
1 x sähkökondensaattori 0.1uF
1 x Fuente de 3.3V - 5V 10+ x puserot
Vaihe 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. The interrupt.h para activar el termómetro manualmente as as reducir el consumo para extender la vida de la akku.
Nuestro -ohjelma opastaa sen prosessin: Leer Temperature -> Mostrar Temperature en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada uno de estos pasos dejaremos pormestari parte del trabajo a las librerías ya pastentes, por lo que no reinventaremos la rueda. Ilmainen DHT -anturikirjasto de Adafruit (disponible en el IDE) y Tiny4kOLED de datacute que descargaremos de Github ya que, al parecer, original author and 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 personal, hän encontrado la opción de las placas metálicas más interactivo.
Vaihe 2: Piirit
En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (elkondensaattori debe estar desconectado) on luonnos ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar elkondensaattori 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 akut ja necedario conectar la masa (GND) del Arduino y el ATtiny85.
Colocar and botón entre el pin 13 del Arduino y el 2 del ATtiny puede helpitar 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.
Vaihe 3: Ohjelmointi
Pääasiassa, esitellyt "Arduino as ISP" -ohjelma. Jos et ole asentanut la placa para el ATtiny, suosittele instalar la placa ATtinyCore de Spence Konde -laitetta. Esta placa no me genero ningún problem de compilación durante la realización del proyecto.
Laajennettu asetus BOD: lle, jossa on 8 MHz: n taajuus ja OptiBoot. Käytä 1MHz: n kommunikaatiota I2C: stä, ei estabiilista ja 16MHz: n cristal externo, además de perder dos pines digitales, el consumo energético aumenta harkintavaltaa.
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
Jatkuva ajunto el sketch 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 = "" converter #deFIN DTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t korkeus = 64; haihtuva bool kääntyi = epätosi; / * * * Keskeytyksenkäsittelijä * */ISR (PCINT_VECTOR) {// keskeytys palautuu aina lepotilasta, jos (digitalRead (I_PIN) == HIGH) {turn = true; // aseta lippu uudelleen piirtämään näyttö uudelleen}} void setup () {cli (); // sammuta keskeytykset PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // kytke keskeytykset päälle adc_disable (); // säästää virtaa sammuttamalla muunnin set_sleep_mode (SLEEP_MODE_PWR_DOWN); // aseta unen tyyppi syväuneen olet.begin (leveys, korkeus, koko (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // aloita olet objekti oled.setFont (FONT8X16); // tämä kirjasin näyttää paremmalta kuin toinen drawScreen (); oled.on (); viive (2000); dht.begin (); käännetty = totta; // lippu piirustusnäyttöön} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (käännetty) {cli (); // kytke keskeytykset pois päältä oled.on (); float h = dht.readHumidity (); // false read to reset dht cache delay (2200); // wait dht to load 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"); // symboli ~ muutettiin kirjastossa näyttämään ° asteen symboliviiveeltä (5000); // näytä 5 sekuntia oled.off (); käännetty = väärä; sei (); // liitä keskeytykset uudelleen} uni (); // mene aina nukkumaan loppuun} void drawScreen () {// piirtää kehyksen päätekstiksi (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); for (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, leveys - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(korkeus - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, leveys - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (korkeus - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, leveys - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Lämpötila:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
Vaihe 4: Johtopäätökset
A pesar de su tamaño insignificante, 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 -ohjelma entrado en nuestro ATtiny
Existen otras librerías para las pantallas OLED. La Librería GFX de Adafruit no me permitió vertailee lo que decidí buscar algo precisamente para at ATtiny, pero existen otras librerías y soluciones que son interesantes de explorar
El Consumo del dispositivo es muy bajo. Ottaen huomioon, että hän on vakava, hänellä on keskimääräinen ja arvioitu akku 3000 mAh: n akulla (NiMH tai LiIon) ja 500 päivää. El Consumo podría redcirse aún other desconectando la pantalla y el sensor antamen desam un des pin del ATtiny, mutta sitä ei tarvitse harkita
Según Technoblogy.com on ATtiny Puede Operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consumo pormestari que vastaa al de la segunda imagen. El Consumo de la batería continúa siendo lo riittää, että bajo como para ser ja proyecto factible
Vaihe 5: Linkit 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…
embeddedthapsts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Suositeltava:
ATTiny85 -kondensaattorimittari: 4 vaihetta
ATTiny85 -kondensaattorimittari: Tämä ohje on tarkoitettu ATTiny85 -pohjaiseen kondensaattorimittariin, jolla on seuraavat ominaisuudet. Perustuu ATTiny85 (DigiStamp) SSD1306 0,96 " OLED -näyttö Taajuusmittaus pienikokoisille kondensaattoreille 1pF - 1uF käyttämällä 555 -oskillaattoriaLatausaika
AtTiny85 -osoitteellinen LED -nauha: 10 vaihetta
AtTiny85-osoitteellinen LED-nauha: Tavoitteeni oli tehdä pöytävalaisin LED-valoista. Halusin sen olevan säädettävä, jotta sitä voitaisiin käyttää sekä päivällä että yöllä. FETit ajamaan niitä 12 voltilla. Tällä kertaa valitsin osoitettavat LEDit, jotka ovat tehokkaita
ATtiny85 puettavat värisevät aktiivisuuden seurantakellot ja ohjelmointi ATtiny85 Arduino Unolla: 4 vaihetta (kuvilla)
ATtiny85 puettavat värisevät aktiivisuuden seurantakellot ja ohjelmointi ATtiny85 Arduino Unon kanssa: Kuinka tehdä puettava aktiivisuuden seurantakello? Tämä on puettava laite, joka on suunniteltu tärisemään havaitessaan pysähtyneisyyden. Vietätkö suurimman osan ajastasi tietokoneella kuten minä? Istutko tuntikausia huomaamatta? Sitten tämä laite on f
Flappy Bird ATtiny85- ja OLED -näytöllä SSD1306: 6 vaihetta (kuvilla)
Flappy Bird ATtiny85- ja OLED -näytöllä SSD1306: Hei kaikki, tänään aion näyttää teille perustamani perusläpimäisen lintukloonin ja kuinka voit tehdä samanlaisen pelin. Käyn periaatteessa läpi koodini kanssasi ja selitän kuinka se toimii joka askeleella. Tämä peli on rakennettu
Käyntikortti/pelikonsoli: ATtiny85 ja OLED -näyttö: 5 vaihetta (kuvilla)
Käyntikortti/pelikonsoli: ATtiny85 ja OLED -näyttö: Hei kaikki! Tänään aion näyttää sinulle, kuinka voit rakentaa oman käyntikortin/pelikonsolin/mitä tahansa kuvitella, jossa on taustavalaistu I2C OLED -näyttö ja ATtiny85 -mikroprosessori. Tässä opastettavassa kerron sinulle, kuinka piirilevy, jonka suunnittelen