Sisukord:
- Tarvikud
- 1. samm: kirjeldus Del Funcionamiento
- 2. samm: vooluringid
- 3. etapp: programm
- 4. samm: järeldused
- Samm 5: Lingid Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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 realiseerib ATmega328p -d, kuid see on huvitav, kuid see võimaldab teil kasutada ATtiny85 cuyo tamaño ja Consumo de Battery Convergen en un dispositivo pequeño y portátil.
Jätkuvalt kirjeldatakse funktsionaalsust, segatakse kõige rohkem vooluringi ja lõpetatakse see programm ja algkommentaarid sobre el proyecto en general.
Tarvikud
1 x ATtiny85
1 x Arduino UNO/PRO/etc (ATtiny programm)
1 x 128x64 Pantalla I2C OLED
1 x anduri temperatuur DHT22
1 x Resistencia 4.7MOhm (1/4W)
1 x elektri kondensaator 0,1uF
1 x Fuente de 3.3V - 5V 10+ x džemprid
1. samm: kirjeldus 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 aku.
Nuestro programm 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 linnapea parte del trabajo a las librerías ya pastentes, por lo que no reinventaremos la rueda. Tasuta DHT -andurite kogu Adafruit (disponible en el IDE) ja Tiny4kOLED de datacute que descargaremos de Github ya que, al parecer, el autor 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 isiklik, ta encontrado la opción de las placas metálicas más interactivo.
2. samm: vooluringid
En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Peamine Arduino programm (elkondensaator debe estar desconectado) koos eskiisiga ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar elkondensaator 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 patareid ja need vajalikud kontuurid massi (GND) del Arduino y el ATtiny85.
Colocar and botón entre el pin 13 del Arduino y el 2 del ATtiny puede hõlbustamiseks hacer pruebas ya que la pantalla no puede estar conectada cuando se programme 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. etapp: programm
Primeramente, valitud debüüdid "Arduino as ISP" on selle programmi programm. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me genero ningún problem de compilación durante la realización del proyecto.
Seadistage BOD, kasutades 8MHz intervallide ja OptiBooti heli. Kasutage 1MHz sideühendust I2C -st, es estabiilselt ja 16MHz püsivalt, kasutades digitaalseid andmesidemänge, el Consumo energético aumenta kaalub.
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
A Continue ajn 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 #define DTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t laius = 128; const uint8_t kõrgus = 64; lenduv bool pööratud = vale; / * * * Katkestuste käitleja * */ISR (PCINT_VECTOR) {// katkestus taastub alati unest, kui (digitalRead (I_PIN) == HIGH) {turn = true; // pane lipp uuesti ekraanile joonistama}} void setup () {cli (); // väljalülitamine katkestab PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // katkestuste sisselülitamine adc_disable (); // säästa energiat muunduri väljalülitamine set_sleep_mode (SLEEP_MODE_PWR_DOWN); // määrake une tüübiks sügav uni. oled.begin (laius, kõrgus, suurus (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // käivita oled objekt oled.setFont (FONT8X16); // see font näeb parem välja kui teine drawScreen (); oled.on (); viivitus (2000); dht.begin (); pööratud = tõsi; // lipp ekraani joonistamiseks} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (keeratud) {cli (); // katkestuste väljalülitamine oled.on (); float h = dht.readHumidity (); // false read to reset dht cache delay (2200); // wait dht to load h = dht.readHumidity (); ujuk 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"); // sümbolit ~ muudeti raamatukogus, et see näeks välja nagu ° kraadi sümboli viivitus (5000); // näita 5 sekundit oled.off (); keeratud = vale; sei (); // manus katkestab uuesti} uni (); // mine alati magama lõpus} void drawScreen () {// joonistab raami ja põhiteksti (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); jaoks (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, laius - 2); oled.sendData (0b11111111); oled.endData (); jaoks (uint8_t y = 1; y <(kõrgus - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, laius - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (kõrgus - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, laius - 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. samm: järeldused
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 programm 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. Arvestades sellega, et ta on võimeline hindama 3000 mAh (NiMH või LiIon) akusid kuni 500 päeva. El Consumo podría redcirse aún más desconectando la pantalla y el sensor sensoramente desde un pin del ATtiny, aga seda ei saa kaaluda
Según Technoblogy.com el ATtiny puede operaator en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto obtenido un consumo linnapea que vastab al de la segunda imagen. El Consumo de la batería Continúa siendo lo soficientemente bajo como para ser un proyecto fact
Samm 5: Lingid 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
Soovitan:
Suurem ja täiustatud jõulutäht Neopixel Attiny85: 3 sammu (piltidega)
Suurem ja täiustatud jõulutäht Neopixel Attiny85: Eelmisel aastal tegin väikese 3D-trükitud jõulutähe, vt https://www.instructables.com/id/Christmas-Star-LE..Sel aastal tegin ühest lõngast suurema tähe 50 neopikslit (5V WS2811). Sellel suuremal tähel oli rohkem mustreid (lisan ja parandan endiselt
ATTiny85 kondensaatorimõõtja: 4 sammu
ATTiny85 kondensaatorimõõtja: see juhend on mõeldud ATTiny85 -l põhineva kondensaatorimõõturi jaoks, millel on järgmised omadused. Põhineb ATTiny85 (DigiStamp) SSD1306 0,96 " OLED -ekraan Sageduse mõõtmine madala väärtusega kondensaatoritele 1pF - 1uF, kasutades 555 ostsillaatorit Laadimisaja mõõtmine
ATtiny85 kantavate vibreerivate tegevuste jälgimise kell ja programmeerimine ATtiny85 koos Arduino Unoga: 4 sammu (piltidega)
ATtiny85 kantavate vibreerivate tegevuste jälgimise kell ja programmeerimine ATtiny85 koos Arduino Unoga: kuidas teha kantavat aktiivsuse jälgimise kella? See on kantav vidin, mis on loodud stagnatsiooni tuvastamisel vibreerima. Kas veedate suurema osa ajast arvutis nagu mina? Kas istute tunde, ilma et peaksite sellest aru saama? Siis on see seade
Flappy Bird ATtiny85 ja OLED -ekraaniga SSD1306: 6 sammu (koos piltidega)
Flappy Bird ATtiny85 ja OLED -ekraanil SSD1306: Hei kõik, täna näitan teile minu loodud lihtsat klapilist linnuklooni ja kuidas saate sarnast mängu teha. Läbin teiega sisuliselt oma koodi läbi ja selgitan igal sammul, kuidas see töötab. See mäng on loodud selleks, et
Visiitkaart/mängukonsool: ATtiny85 ja OLED -ekraan: 5 sammu (piltidega)
Visiitkaart/mängukonsool: ATtiny85 ja OLED -ekraan: Tere kõigile! Täna näitan teile, kuidas saate luua oma visiitkaardi/mängukonsooli/mida iganes võite ette kujutada, millel on taustvalgustusega I2C OLED -ekraan ja ATtiny85 mikroprotsessor. Selles juhendis räägin teile, kuidas minu kavandatud trükkplaat