ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1 - መግለጫ ዴል Funcionamiento
- ደረጃ 2 - ወረዳዎች
- ደረጃ 3: ፕሮግራሚዮን
- ደረጃ 4 መደምደሚያዎች
- ደረጃ 5: አገናኞች Y Lecturas Relacionados
ቪዲዮ: Attiny85 Termómetro OLED: 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
Este proyecto consiste en un termómetro pequeño y simple que muestra la temperatura ትክክለኛው ፣ ላ humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y consumo de batería convergen en un dispositivo pequeño y portátil.
አንድ ቀጣይነት ያለው መግለጫ el funcionamiento ፣ seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto and general.
አቅርቦቶች
1 x ATtiny85
1 x Arduino UNO/PRO/etc (programador del ATtiny)
1 x 128x64 ፓንታላ I2C OLED
1 x ዳሳሽ የሙቀት መጠን DHT22
1 x Resistencia 4.7MOhm (1/4 ዋ)
1 x Capacitor electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Jumpers
ደረጃ 1 - መግለጫ ዴል Funcionamiento
ኤል 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 ላ batería.
Nuestro programa se guiará por el siguiente proceso: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada uno de estos pasos dejaremos la ከንቲባ ፓርት ዴል trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. ላ librería DHT ዳሳሽ ቤተ -መጽሐፍት de Adafruit (disponible en el IDE) y 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. በግለሰብ ደረጃ ፣ እሱ encontrado la opción de las placas metálicas más interactivo.
ደረጃ 2 - ወረዳዎች
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. ፕራክራሜንታሴ ደ ደ ኘሮግራም አል አርዱinoኖ (ኤል capacitor debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el capacitor para evitar que nuestro Arduino se reinicie al programar el ATtiny85.
ኤል አትቲኒ 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 y el 2 del ATtiny puede facilitar el hacer pruebas ya que la pantalla no puede estar conectada cuando se programa 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.
ደረጃ 3: ፕሮግራሚዮን
ፕራክራሜንቴሜ ፣ ደበሞስ ሴልሲዮናር “አርዱinoኖ እንደ አይኤስፒ” como el programador. 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 problema de compilación durante la realización del proyecto.
ላ placa debe estar configurada sin BOD ፣ con un reloj de 8MHz interno y sin OptiBoot። 1MHz la comunicación por I2C no es estable y a 16MHz con cristal externo, además de perder dos pines digitales, el consumo energético aumenta ጉልህ ግምት።
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 continuación ajunto el sketch necesario para el proyecto.
#አካትት #አካትት #አካት #አካት #ጨምር I_PINB PCINT3 #መግለፅ I_PIN PB3 #ዲፊኔ I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) አሰናክል = "" adc = "" converter #define DHIN #ጥራት DHTTYPE DHT22 DHT dht (DHTPIN ፣ DHTTYPE); const uint8_t ስፋት = 128; const uint8_t ቁመት = 64; የማይለዋወጥ ገንዳ ተለወጠ = ሐሰት; / * * * አስተናጋጅ ተቆጣጣሪ * */ISR (PCINT_VECTOR) {// ማቋረጥ (digitalRead (I_PIN) == HIGH) {ከተዞረ = እውነት ከሆነ; // ባንዲራውን እንደገና ወደ ማያ እንደገና እንዲያቀናብሩ}} ባዶነት ማዋቀር () {cli () ፤ // ያቋርጣል PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN ፣ INPUT); sei (); // ማብራት ያቋርጣል adc_disable (); // የመቀየሪያውን set_sleep_mode (SLEEP_MODE_PWR_DOWN) በማጥፋት ኃይልን ይቆጥቡ ፤ // የእንቅልፍ ዓይነቱን ወደ ጥልቅ እንቅልፍ oled.begin (ስፋት ፣ ቁመት ፣ መጠን (ጥቃቅን4koled_init_128x64br) ፣ ጥቃቅን 4koled_init_128x64br) ያዘጋጁ። // የተቀባ ነገር ይጀምሩ oled.setFont (FONT8X16); // ይህ ቅርጸ -ቁምፊ ከሌላው ስዕል እስክሪን () የተሻለ ይመስላል። oled.on (); መዘግየት (2000); dht.begin (); ተለወጠ = እውነት; // ለስዕል ማሳያ ባንዲራ} ባዶ እንቅልፍ () {sleep_enable (); sleep_cpu (); } ባዶነት loop () (ከሆነ (ዞሯል) {cli (); // ማቋረጫዎችን ያጥፉ oled.on (); ተንሳፋፊ h = dht.readHumidity (); // የሐሰት መሸጎጫ dht መሸጎጫ መዘግየት (2200) ፣ // ለመጫን dht ይጠብቁ h = dht.readHumidity (); ተንሳፋፊ t = dht.readTemperature (); ተንሳፋፊ i = dht.computeHeatIndex (t ፣ h ፣ ሐሰት); 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"); // የ ‹ዲግሪ› ምልክት መዘግየት (5000) ለመምሰል ~ ምልክት በቤተመጽሐፍት ላይ ተለውጧል። // ለ 5 ሰከንዶች አሳይ oled.off (); ተለወጠ = ሐሰት; sei (); // አባሪ እንደገና ያቋርጣል} እንቅልፍ (); // ሁልጊዜ መጨረሻ ላይ ይተኛሉ} ባዶ ባዶ ስዕል ማያ ገጽ () {// ፍሬሙን ዋና ጽሑፍ ለ (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y) ፤ oled.startData (); ለ (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 ፣ ስፋት - 2); oled.sendData (0b11111111); oled.endData (); ለ (uint8_t y = 1; y <(ቁመት - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000 ፣ ስፋት - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0 ፣ (ቁመት - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000 ፣ ስፋት - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Temp:"); oled.setCursor (4, 3); oled.print ("ሁም:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
ደረጃ 4 መደምደሚያዎች
ብዙም የማይረሳ ፣ ኤል 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 programa 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 explorar
ኤል ኮሙሞ ዴል ዲስፖሲቲቮ እስ ሙይ ባጆ። እሱ እንደታሰበው ፣ እሱ ሜዲዶ እና ግምቱ ላ ቪዳ ፓራ ባኔሪያ ዴ 3000mAh (NiMH o LiIon) በ 500 ጊዜ ውስጥ። El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he considerrado necesario
Según Technoblogy. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
ደረጃ 5: አገናኞች 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 erots.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
የሚመከር:
ለ Digispark ATtiny85: 7 ደረጃዎች የባትሪ ኃይል ፍጆታን መቀነስ
ለ Digispark ATtiny85 የባትሪ ኃይል ፍጆታን መቀነስ ወይም: - ለ 20 ዓመታት አርዱዲኖን በ 2032 ሳንቲም ሴል ማስኬድ። የዲጂስፓርክ አርዱዲኖ ቦርድዎን ከአርዱዲኖ ፕሮግራም ጋር ከሳጥኑ ውጭ 20 mA በ 5 ቮልት ይሳባል። በ 5 ቮልት የኃይል ባንክ 2000 ሚአሰ ለ 4 ቀናት ብቻ ይሠራል
ATTiny85 Capacitor Meter: 4 ደረጃዎች
ATTiny85 Capacitor Meter: ይህ አስተማሪ በ ATTiny85 ላይ በመመርኮዝ ለ Capacitor ሜትር ነው። ለዝቅተኛ እሴት capacitors 1pF - 1uF የ OLED ማሳያ ድግግሞሽ ልኬት 555 oscillatorCharge time መለኪያ
ATtiny85 ተለባሽ የንዝረት እንቅስቃሴ መከታተያ ሰዓት እና ፕሮግራም ATtiny85 ከአርዱዲኖ ኡኖ ጋር 4 ደረጃዎች (ከስዕሎች ጋር)
ATtiny85 ተለባሽ የሚንቀጠቀጥ የእንቅስቃሴ መከታተያ ሰዓት እና ፕሮግራም ATtiny85 ከአርዱዲኖ ኡኖ ጋር - የሚለበስ እንቅስቃሴን የመከታተያ ሰዓት እንዴት ማድረግ እንደሚቻል? ይህ መዘግየትን ሲያገኝ ንዝረት ለማድረግ የተነደፈ ተለባሽ መግብር ነው። አብዛኛውን ጊዜዎን እንደ እኔ ኮምፒውተር ላይ ያሳልፋሉ? ሳያውቁት ለሰዓታት ተቀምጠዋል? ከዚያ ይህ መሣሪያ f
ፍላፕ ወፍ በ ATtiny85 እና OLED ማሳያ SSD1306: 6 ደረጃዎች (ከስዕሎች ጋር)
Flappy Bird በ ATtiny85 እና በ OLED ማሳያ SSD1306 ላይ: ሄይ ሁሉም ፣ ዛሬ እኔ የፈጠርኩትን መሠረታዊ የፍላፍ ወፍ ክሎንን እና ተመሳሳይ ጨዋታ ስለማድረግ እንዴት እንደምትችል አሳያችኋለሁ። እኔ በመሠረቱ ከእርስዎ ጋር ኮዴን እሮጣለሁ እና በየመንገዱ ደረጃ እንዴት እንደሚሰራ አብራራለሁ። ይህ ጨዋታ የተገነባው ለ
የቢዝነስ ካርድ/የጨዋታ ኮንሶል - ATtiny85 እና OLED ማያ ገጽ 5 ደረጃዎች (ከስዕሎች ጋር)
የቢዝነስ ካርድ/የጨዋታ ኮንሶል: ATtiny85 እና OLED ማያ ገጽ: ሰላም ሁላችሁም! ዛሬ የኋላ የንግድ ብርሃን/የ I2C OLED ማሳያ እና የ ATtiny85 ማይክሮፕሮሰሰርን የሚያሳዩትን ማንኛውንም የራስዎን የንግድ ካርድ/የጨዋታ ኮንሶል/እንዴት እንደሚገነቡ አሳያችኋለሁ። በዚህ መመሪያ ውስጥ እኔ የምፈልገውን ፒሲቢ እንዴት እነግርዎታለሁ