Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Descripción Del Funcionamiento
- Hakbang 2: Mga Circuitos
- Hakbang 3: Programación
- Hakbang 4: Mga Konklusyon
- Hakbang 5: Mga Link Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Ang Este proyecto ay binubuo ng un termómetro pequeño at simpleng que muestra la temperatura na aktwal, ang humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, ngunit ang interesado ng este bersyon na ito ay magagamit sa ATtiny85 cuyo tamaño y consumo de batería convertgen en un dispositivo pequeño y portátil.
Ang isang pagpapatuloy na naglalarawan sa bawat pag-uusapan, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general.
Mga gamit
1 x ATtiny85
1 x Arduino UNO / PRO / etc (programador del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Sensor temperatura DHT22
1 x Resistencia 4.7MOhm (1 / 4W)
1 x Capacitor electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Jumpers
Hakbang 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.he interrupt.h para sa activar el termómetro manualmente y así reducir el consumo para extender la vida de la batería.
Nuestro programa se guiará por el siguiente proceso: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para sa Cada uno de estos pasos dejaremos la mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. Ang librería DHT sensor library ng Adafruit (hindi maikakaila sa IDE) at 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. Sa personal na ito, nag-encontrado siya ng opción de las placas metálicas más interactiveivo.
Hakbang 2: Mga Circuitos
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el 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.
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 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.
Hakbang 3: Programación
Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Hindi ito mai-install ng isang lugar para sa ATTiny, recomiendo installar la placa ATtinyCore de Spence Konde. Esta placa no me generó ningún problema de compilación durante la realización del proyecto.
La placa debe estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot. Ang mga gumagamit ng 1MHz la comunicación por I2C ay walang kamangha-manghang 16MHz con cristal externo, además de perder dos pines digitales, el effo energético aumenta considerablemente.
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
Ang isang pagpapatuloy na pagpapatakbo ng sketch na kinakailangan para sa mga proyekto.
#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 DHTPIN #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t lapad = 128; const uint8_t taas = 64; pabagu-bago ng isip bool nakabukas = maling; / * * * Makagambala handler * * / ISR (PCINT_VECTOR) {// makagambala laging recover mula sa pagtulog kung (digitalRead (I_PIN) == MATAAS) {naka = totoo; // itakda ang bandila upang muling gawing screen}} i-void ang pag-setup () {kli (); // turn off interrupts PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // turn on interrupts adc_disable (); // makatipid ng kuryente na patayin ang converter set_sidur_mode (SLEEP_MODE_PWR_DOWN); // itakda ang uri ng pagtulog sa malalim na pagtulog oled.begin (lapad, taas, sukat ng (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // start oled object oled.setFont (FONT8X16); // ang font na ito ay mukhang mas mahusay kaysa sa iba pang isang drawScreen (); oled.on (); pagkaantala (2000); dht.begin (); naka = totoo; // flag for drawing screen} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {kung (nakabukas) {sij (); // turn off interrupts 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"); // ang ~ simbolo ay binago sa silid-aklatan upang magmukhang isang pagkaantala ng simbolo ng ° degree (5000); // show for 5 segundo oled.off (); naka = maling; sei (); // ilakip ang muling nakakagambala} pagtulog (); // laging matulog sa dulo} void drawScreen () {// kumukuha ng frame ang pangunahing teksto para sa (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); para sa (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, lapad - 2); oled.sendData (0b11111111); oled.endData (); para sa (uint8_t y = 1; y <(taas - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, lapad - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (taas - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, lapad - 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:"); }
Hakbang 4: Mga Konklusyon
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 programa ha entrado en nuestro ATtiny
Ipataw ang mga librong ito para sa las pantallas OLED. Ang librería GFX de Adafruit no me permiso ay maikakumpara sa lahat ng desisyon ng buscar algo precisamente para sa ATtiny, ngunit mayroon nang mga aklatan at solusyong ito ng anak na interesantes de explorar
El consumo del dispositivo es muy bajo. Kung isasaalang-alang ang uso, siya ay tumitingin sa bawat taon para sa isang baterya ng 3000mAh (NiMH o LiIon) sa 500 días. 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 considerado necesario
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 mayor que corresponde al de la segunda imagen. El consumo de la batería Continúa siendo lo suf sapatmente bajo como para ser un proyecto factible
Hakbang 5: Mga Link 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 Thoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Inirerekumendang:
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay ng Aktibidad at Programming ATtiny85 Sa Arduino Uno: 4 na Hakbang (na may Mga Larawan)
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay sa Aktibidad at Programming ATtiny85 Sa Arduino Uno: Paano gagawin ang relo ng pagsusuot ng aktibidad na maaaring panoorin? Ito ay isang naisusuot na gadget na dinisenyo upang mag-vibrate kapag nakita nito ang pagwawalang-kilos. Ginugugol mo ba ang karamihan ng iyong oras sa computer na tulad ko? Nakaupo ka ba nang maraming oras nang hindi namamalayan? Pagkatapos ang aparatong ito ay f
Mga graphic sa isang SSD1306 I2C OLED 128x64 Display With CircuitPython Gamit ang isang Itsybitsy M4 Express: 13 Mga Hakbang (na may Mga Larawan)
Mga graphic sa isang SSD1306 I2C OLED 128x64 Display With CircuitPython Gamit ang isang Itsybitsy M4 Express: Ang display na SSD1306 OLED ay isang maliit (0.96 "), mura, malawak na magagamit, I2C, monochrome grapikong display na may 128x64 pixel, na madaling ma-interfaced (4 lamang wires) sa microprocessor development boards tulad ng isang Raspberry Pi, Arduino o
Flappy Bird sa ATtiny85 at OLED Display SSD1306: 6 Mga Hakbang (na may Mga Larawan)
Flappy Bird sa ATtiny85 at OLED Display SSD1306: Hey Lahat, Ngayon ay ipapakita ko sa iyo ang isang pangunahing flappy bird clone na nilikha ko, at kung paano ka makakagawa ng isang katulad na laro. Mahalaga na tatakbo ko ang aking code sa iyo at ipaliwanag kung paano ito gumagana sa bawat hakbang. Ang larong ito ay binuo upang ru
Business Card / Game Console: ATtiny85 at OLED Screen: 5 Hakbang (na may Mga Larawan)
Business Card / Game Console: ATtiny85 at OLED Screen: Kumusta ang lahat! Ngayon ay ipapakita ko sa iyo kung paano mo maitataguyod ang iyong sariling business card / game console / kung anuman ang naiisip mong nagtatampok ng backlit na I2C OLED display at isang ATtiny85 Microprocessor. Sa Instructable na ito sasabihin ko sa iyo kung paano ang isang PCB na tinutukoy ko
10 Mga kahalili sa DIY sa Mga Off-The-Shelf na Elektroniko na Mga Bahagi: 11 Mga Hakbang (na may Mga Larawan)
10 Mga Kahalili sa DIY sa Mga Off-The-Shelf na Mga Elektroniko na Bahagi: Maligayang pagdating sa aking kauna-unahang itinuro! Sa palagay mo ba ang ilang mga bahagi mula sa mga tagatingi sa online ay masyadong mahal o may mababang kalidad? Kailangan bang makakuha ng isang prototype nang mabilis at tumatakbo nang mabilis at hindi makapaghintay linggo para sa pagpapadala? Walang mga lokal na electronics distributor? Ang fol