Turinys:
- Prekės
- 1 veiksmas: aprašymas „Fun Funamamiento“
- 2 žingsnis: grandinės
- 3 žingsnis: Programavimas
- 4 žingsnis: Išvados
- 5 veiksmas: nuorodos į „Lecturas Relacionados“
Video: „Attiny85 Termómetro OLED“: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Este proyecto consiste en un termómetro pequeño y simple que muestra la temperatura faktinė, la humedad relativa y el índice de temperatura. Puede realizuoti su ATmega328p, bet įdomu iš esta versiją ir panaudojimo ir ATtiny85 cuyo tamaño ir Consumo de batería convergen en un dispositivo pequeño y portátil.
Tęstinis aprašymas el. Funkcijose, derinys labiausiai įpratęs prie grandinės ir baigiamasis programos ir algoritmų komentarai, tinkami el proyecto en general.
Prekės
1 x ATtiny85
1 x „Arduino UNO/PRO/etc“(„ATtiny“programa)
1 x 128x64 kelnės I2C OLED
1 x jutiklio temperatūra DHT22
1 x „Resistencia“4.7MOhm (1/4W)
1 x 0.1uF elektrinis kondensatorius
1 x 3,3 V - 5 V 10+ x džemperiai
1 veiksmas: aprašymas „Fun Funamamiento“
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 as así reducir el consumo para extender la vida de la baterija.
Nuestro programa se guiará por el siguiente process: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada uno de estos pasos dejaremos la mero parte del trabajo a las librerías ya egzistuoja, por lo que no reinventaremos la rueda. Nemokama DHT jutiklių biblioteka, skirta „Adafruit“(disponable en el IDE) ir „Tiny4kOLED“, skirta „Github ya que“duomenų perdavimui, originaliam autoriui ir duomenų autoriui, ademai, 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. Asmeniškai jis užsiima metalozijų interaktyviu skaitymu.
2 žingsnis: grandinės
En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Paruoškite Arduino programą (el kondensatorius debe estar desconectado) su eskizu ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el kondensatorius 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 baterija ir būtinas konektorius la masa (GND) del Arduino y el ATtiny85.
„Colocar“ir „bot“Entre el pin 13 del Arduino ir 2 el.
Como se observa en las imágenes. El pin SDA del ATyiny es el 0 y el SCL/CLK es el 2. Nuestro DHT estect con enado en el pin 4.
3 žingsnis: Programavimas
Svarbiausias programos „Arduino as ISP“programos vadovas. 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.
Išskirkite BOD konfigūraciją, perkelkite 8MHz intervalą ir „OptiBoot“. Naudojant 1MHz komunikaciją iš I2C nėra estabilios ir 16MHz išorinės kristalinės sistemos, además de perder dos pines digitalles, el consumo energético aumenta apsvarstyti.
Cabe destacar que he modificado un archivo en la librrí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
A Continue ajn el eskizas, būtinas 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 plotis = 128; const uint8_t aukštis = 64; nepastovus boolis pasuktas = klaidingas; / * * * Nutraukimo tvarkytojas * */ISR (PCINT_VECTOR) {// pertraukimas visada atsigauna iš miego režimo, jei (digitalRead (I_PIN) == HIGH) {turn = true; // vėl nustatyti vėliavą, kad ekranas būtų perbraižytas}} void setup () {cli (); // išjungti pertraukimus PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // įjungti pertraukas adc_disable (); // taupyti energiją išjungiant keitiklį set_sleep_mode (SLEEP_MODE_PWR_DOWN); // nustatykite miego tipą į gilaus miego režimą jūs.begin (plotis, aukštis, dydisof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // pradėti esi objektas oled.setFont (FONT8X16); // šis šriftas atrodo geriau nei kitas drawScreen (); oled.on (); vėlavimas (2000 m.); dht.begin (); pasuktas = tiesa; // vėliava piešiant ekraną} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (pasisuko) {cli (); // išjungti pertraukas oled.on (); float h = dht.readHumidity (); // false read to reset dht cache delay (2200); // wait dht to load h = dht.readHumidity (); plūdė t = dht.readTemperature (); plūdė 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"); // simbolis ~ buvo pakeistas bibliotekoje, kad atrodytų kaip ° laipsnio simbolio uždelsimas (5000); // rodyti 5 sekundes oled.off (); pasuktas = klaidingas; sei (); // vėl pridėkite pertraukas} miegas (); // visada eiti miegoti pabaigoje} void drawScreen () {// piešia rėmelį ir pagrindinį tekstą (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, plotis - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(aukštis - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, plotis - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (aukštis - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, plotis - 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 žingsnis: Išvados
A pesar de su tamaño nereikšmingas, 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 programoje, kuri yra įtraukta į entuziastingą ATtiny
Existen otras librerías para las pantallas OLED. Laisvas GFX de Adafruit no me permitió palygina lo lo que decidí buscar algo precisamente para el ATtiny, bet gali egzistuoti, kad yra librerías y soluciones que son interesantes de explorera
El Consumo del dispositivo es muy bajo. Atsižvelgiant į tai, kad jis yra pastovus, jis turi vidutiniškai apskaičiuotą 3000 mAh (NiMH arba Li) akumuliatorių ir 500 litų. El Consumo podría redcirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, bet nesvarbu, kad jis yra būtinas
„Technoblogy.com“segmente el ATtiny puede operacininkas ir vienas konsumo įdegis, bajo como el mostrado en la primera imagen, pero en este proyecto jis obtenido ir consumo mero eilė atitinka al de la segunda imagen. El Consumo de la batería Continúa siendo lo soficientemente bajo como para ser un proyecto factible
5 veiksmas: nuorodos į „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
Rekomenduojamas:
„ATtiny85“nešiojamas vibruojančios veiklos stebėjimo laikrodis ir programavimas „ATtiny85“su „Arduino Uno“: 4 žingsniai (su nuotraukomis)
„ATtiny85“nešiojamas vibruojančios veiklos stebėjimo laikrodis ir programavimas ATtiny85 su „Arduino Uno“: kaip padaryti nešiojamą veiklos stebėjimo laikrodį? Tai nešiojama programėlė, sukurta vibruoti aptikus sąstingį. Ar daug laiko praleidžiate prie kompiuterio kaip aš? Ar tu sėdi valandas to nesuvokdamas? Tada šis įrenginys yra
„Arduino“infraraudonųjų spindulių termometro pistoleto MDF dėklas: 4 žingsniai (su nuotraukomis)
„Arduino“infraraudonųjų spindulių termometro pistoleto MDF dėklas: Šis projektas skirtas infraraudonųjų spindulių termometrui gaminti su „Arduino“, grandinė yra įdėta į MDF korpusą, panašų į rinkoje esantį medicininį infraraudonųjų spindulių termometrą. Jutiklis infraraudonųjų spindulių termometras GY-906 naudojamas objekto temperatūrai matuoti be kontakto, tai gali reikšti
„Flappy Bird“ATtiny85 ir OLED ekranuose SSD 1306: 6 žingsniai (su paveikslėliais)
„Flappy Bird“„ATtiny85“ir „OLED Display SSD1306“diske: Sveiki visi, šiandien aš jums parodysiu pagrindinį mano sukurtą žaibišką paukščių kloną ir kaip galite sukurti panašų žaidimą. Aš iš esmės peržiūrėsiu savo kodą ir paaiškinsiu, kaip jis veikia kiekviename žingsnyje. Šis žaidimas sukurtas taip, kad
Vizitinė kortelė/žaidimų konsolė: ATtiny85 ir OLED ekranas: 5 žingsniai (su nuotraukomis)
Vizitinė kortelė/žaidimų konsolė: „ATtiny85“ir OLED ekranas: Sveiki visi! Šiandien aš jums parodysiu, kaip galite sukurti savo vizitinę kortelę/žaidimų konsolę/viską, ką tik galite įsivaizduoti, kuriame yra apšviestas I2C OLED ekranas ir ATtiny85 mikroprocesorius. Šioje instrukcijoje aš jums pasakysiu, kaip mano sukurtas PCB
Belaidžio kepsninės termometro diapazono padidinimas (2 aps.): 11 žingsnių
Belaidžio kepsninės termometro diapazono padidinimas (2 aps.): Šioje instrukcijoje aprašomas labai paprastas belaidžio kepsninės termometro diapazono padidinimo procesas. Nors procesas turėtų būti panašus beveik visuose RF termometruose, konkretus modelis, kurį įsilaužiau, yra „Maverick RediChek Remote Wir