Tartalomjegyzék:
- Kellékek
- 1. lépés: Descripción Del Funcionamiento
- 2. lépés: Áramkörök
- 3. lépés: Programozás
- 4. lépés: Következtetések
- 5. lépés: Linkek Y Lecturas Relacionados
Videó: Attiny85 Termómetro OLED: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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 realizálja az ATmega328p -t, de érdekli az esta versión és hasznosítja az ATtiny85 cuyo tamaño és Consumo de batería convergen en un dispositivo pequeño y portátil.
A folytonos leírás el funcionamiento, seguido mostraré el circuitito y finalizaré con el program y algunos comentarios sobre el proyecto en general.
Kellékek
1 x ATtiny85
1 x Arduino UNO/PRO/etc (ATtiny programozó)
1 x 128x64 méretű I2C OLED nadrág
1 x DHT22 érzékelő hőmérséklet
1 x Resistencia 4.7MOhm (1/4W)
1 x 0.1uF elektromos kondenzátor
1 x Fuente de 3.3V - 5V 10+ x jumper
1. lépés: 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.he interrupt.h para activar el termómetro manualmente y así reducir el consumo para extender la vida de la batería.
A Nuestro program 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 polgármester parte del trabajo a las librerías ya létező, por lo que no reinventaremos la rueda. Ingyenes DHT szenzortár 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. En lo personal, ő encontrado la opción de las placas metálicas más interactivo.
2. lépés: Áramkörök
En la primer imagen se encuentra el circuitito que requerimos para programar el ATtiny85. Arduino Primeramente se debe programar (elkondenzátor debe estar desconectado) az ArduinoISP vázlata, az archívumok -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar elkondenzátor 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 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 facilititar 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.
3. lépés: Programozás
A legfontosabb, hogy a "Arduino as ISP" programcsomagban szerepel. 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.
Állítsa be a BOD konfigurációját, és válassza ki a 8MHz -es interno és az OptiBoot funkciót. Használja az 1MHz -es kommunikációt az I2C -n, nem estabilis és 16MHz -es külső kristályokkal, además de perder dos pines digitales, el consumo energético aumenta arvestrablemente.
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.
#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 #deINDHTP #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t magasság = 64; illékony bool fordult = hamis; / * * * Megszakításkezelő * */ISR (PCINT_VECTOR) {// a megszakítás mindig helyreáll alvó állapotból, ha (digitalRead (I_PIN) == HIGH) {turn = true; // állítsa a zászlót a képernyő újrarajzolására}} void setup () {cli (); // kikapcsolás megszakítja PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // megszakítások bekapcsolása adc_disable (); // energiatakarékosság az átalakító kikapcsolása set_sleep_mode (SLEEP_MODE_PWR_DOWN); // állítsa az alvás típusát mély alvásra. oled.begin (szélesség, magasság, méret (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // start oled objektum oled.setFont (FONT8X16); // ez a betűtípus jobban néz ki, mint a másik drawScreen (); oled.on (); késleltetés (2000); dht.begin (); fordult = igaz; // zászló a képernyő rajzolásához} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (megfordult) {cli (); // kikapcsolja a megszakításokat oled.on (); float h = dht.readHumidity (); // false read to 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"); // a ~ szimbólum a könyvtárban úgy változott, hogy ° fokos jelkésleltetésre hasonlítson (5000); // mutat 5 másodpercig oled.off (); fordult = hamis; sei (); // ismét csatolja a megszakításokat} sleep (); // mindig aludjon a végén} void drawScreen () {// megrajzolja a keretet és a fő szöveget (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, szélesség - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(magasság - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, szélesség - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (magasság - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, szélesség - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Hőmérséklet:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
4. lépés: Következtetések
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 program ha entrado en nuestro ATtiny
Existen otras librerías para las pantallas OLED. A Librería GFX de Adafruit no me permitió összeveti a lo que decidí buscar algo precisamente para el ATtiny, de ha létezik otras librerías y soluciones que son interesantes de explorar
El consumo del dispositivo es muy bajo. Figyelembe véve az állandó kényelmetlenséget, 3000 mAh (NiMH vagy LiIon) és 500 díjazású akkumulátorokkal rendelkezik. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, de nem kell számítani rá
Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consumo polgármester que megfelel al de la segunda imagen. El Consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
5. lépés: Linkek 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
Ajánlott:
Nagyobb és továbbfejlesztett karácsonyi csillag Neopixel Attiny85: 3 lépés (képekkel)
Nagyobb és továbbfejlesztett karácsonyi csillag Neopixel Attiny85: Tavaly készítettem egy kisméretű 3D nyomtatott karácsonyi csillagot, lásd https://www.instructables.com/id/Christmas-Star-LE … Idén egy nagyobb csillagot készítettem egy szálból 50 neopixelből (5V WS2811). Ennek a nagyobb csillagnak több mintája volt (még mindig hozzáteszem és javítom
Az akkumulátor fogyasztásának csökkentése a Digispark ATtiny85 esetében: 7 lépés
Az akkumulátor energiafogyasztásának csökkentése a Digispark ATtiny85 esetében: vagy: Arduino futtatása 2032 -es érmecellával 2 évig. A Digispark Arduino tábla használata Arduino program segítségével a dobozból 20 mA -t vesz fel 5 volton. 5 voltos tápegységgel 2000 mAh, csak 4 napig működik
ATtiny85 viselhető vibrációs tevékenységkövető óra és programozás ATtiny85 Arduino Uno -val: 4 lépés (képekkel)
ATtiny85 viselhető vibrációs tevékenységkövető óra és programozás ATtiny85 Arduino Uno -val: Hogyan készítsük el a viselhető tevékenységkövető órát? Ez egy hordható eszköz, amelyet rezgésre terveztek, amikor stagnálást észlel. A legtöbb időt a számítógépen tölti, mint én? Órákig ül, anélkül, hogy észrevenné? Akkor ez a készülék f
Flappy Bird az ATtiny85 és OLED kijelzőn SSD 1306: 6 lépés (képekkel)
Flappy Bird az ATtiny85 és az OLED SSD1306 kijelzőn: Hé Mindenki, ma megmutatom nektek az általam létrehozott alapvető flappy madárklónt, és hogyan lehet hasonló játékot készíteni. Lényegében végigfutom veled a kódomat, és minden lépésben elmagyarázom, hogyan működik. Ez a játék arra készült, hogy
Névjegykártya/játékkonzol: ATtiny85 és OLED képernyő: 5 lépés (képekkel)
Névjegykártya/játékkonzol: ATtiny85 és OLED képernyő: Üdv mindenkinek! Ma megmutatom, hogyan készíthet saját névjegykártyát/játékkonzolt/bármit, amit csak el tud képzelni, és amely háttérvilágítású I2C OLED kijelzőt és ATtiny85 mikroprocesszort tartalmaz. Ebben az utasításban elmondom, hogy egy általam tervezett NYÁK -ot