สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: คำอธิบาย Del Funcionamiento
- ขั้นตอนที่ 2: Circuitos
- ขั้นตอนที่ 3: โปรแกรม
- ขั้นตอนที่ 4: บทสรุป
- ขั้นตอนที่ 5: ลิงก์ Y Lecturas Relacionados
วีดีโอ: Attiny85 Termómetro OLED: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
Este proyecto ประกอบด้วย en un termómetro pequeño และ simple que muestra la temperatura actual, la humedad relativa y el índice de temperatura. การใช้งานจริงกับ ATmega328p, การใช้งานจริงกับ ATtiny85 ที่ใช้งานได้กับแบตเตอรี่คอนเวอร์เจนและพอร์ต
A Continuacion describiré el funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general. คำอธิบาย
เสบียง
1 x ATtiny85
1 x Arduino UNO/PRO/ฯลฯ (โปรแกรมเมอร์เดล ATtiny)
1 x 128x64 กางเกง I2C OLED
1 x อุณหภูมิเซนเซอร์ DHT22
1 x ตัวต้านทาน 4.7MOhm (1/4W)
1 x ตัวเก็บประจุไฟฟ้า 0.1uF
1 x Fuente de 3.3V - 5V 10+ x จัมเปอร์
ขั้นตอนที่ 1: คำอธิบาย Del Funcionamiento
วัตถุประสงค์ของวัตถุประสงค์ส่วนใหญ่ ลอส tres valores anteriormente mencionados en la pantalla OLED, además, como objetivo secundario, และรวมถึง el uso de la librería sleep.he interrupt.h para activar de el termómetro manualmentuir ขยายเป็นเงื่อนไข ลา batería.
โปรแกรม Nuestro 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 mayor parte del trabajo a las librerías yaดำรงอยู่, por lo que no reinventaremos la rueda. ไลบรารี่เซ็นเซอร์ DHT ของ Adafruit (ใช้ผ่าน en el IDE) และ Tiny4kOLED จาก 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 elequipo. โดยส่วนตัว เขาขัดแย้งกับ opción de las placas metalicas más interactiveivo.
ขั้นตอนที่ 2: Circuitos
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. ไพรเมอร์ไพรเมอร์ Primeramente se debe programar al Arduino (ตัวเก็บประจุ el debe estar desconectado) กับ Sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP Una vez hecho esto se debe colocar el capacitor สำหรับ evitar que nuestro Arduino se reinicie al programar el ATtiny85
El ATtiny se puede alimentar directamente del Arduino การใช้งานกับอุปกรณ์ที่ใช้ร่วมกัน como una batería es necesario conectar la masa (GND) จาก Arduino และ ATtiny85
Colocar unbotón เข้า el pin 13 ของ 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 เชื่อมต่อด้วย el pin 4
ขั้นตอนที่ 3: โปรแกรม
Primeramente, debemos เลือก "Arduino as ISP" ร่วมกับโปรแกรมเมอร์ Si aún no han instalado la placa para el ATtiny, แนะนำการติดตั้ง 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 กำหนดค่า sin BOD, ตั้งค่า 8MHz interno y sin OptiBoot ใช้งานได้ 1MHz สำหรับการใช้งาน I2C ไม่มีการตั้งค่าและ 16MHz กับ cristal externo, ใช้งานผ่านระบบดิจิทัล, ใช้งานจริงเพิ่มมาก
Cabe destacar que he modificado un archivo en la libría Tiny4kOLED. ดาวน์โหลด การแก้ไขเอกสารเก่าใน "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
ความต่อเนื่องของ 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)) converter #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t ความกว้าง = 128; const uint8_t ความสูง = 64; บูลผันผวนเปลี่ยน = เท็จ; /* * * ตัวจัดการขัดจังหวะ * */ ISR (PCINT_VECTOR) {// ขัดจังหวะจะกู้คืนจากโหมดสลีปเสมอถ้า (digitalRead (I_PIN) == สูง) { หัน = จริง; //ตั้งค่าแฟล็กเพื่อวาดหน้าจอใหม่อีกครั้ง } }การตั้งค่าเป็นโมฆะ() { cli(); // ปิดการขัดจังหวะ PCMSK |= (1 << I_PINB); GIMSK |= (1 << PCIE); โหมดพิน (I_PIN, INPUT); เส (); //เปิดอินเตอร์รัปต์ adc_disable(); //ประหยัดพลังงานโดยปิดตัวแปลง set_sleep_mode(SLEEP_MODE_PWR_DOWN); //กำหนดประเภทของ sleep เป็น deep sleep oled.begin(width, height, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br); // เริ่มวัตถุ oled oled.setFont (FONT8X16); // แบบอักษรนี้ดูดีกว่า drawScreen(); oled.on(); ล่าช้า (2000); dht.begin(); หัน = จริง; //ตั้งค่าสถานะสำหรับหน้าจอการวาด } void sleep(){ sleep_enable(); sleep_cpu(); } วงเป็นโมฆะ () { ถ้า (หัน) { cli(); //ปิดการขัดจังหวะ oled.on(); float h = dht.readHumidity();//false read เพื่อรีเซ็ตการหน่วงเวลาแคช dht(2200); //รอ dht เพื่อโหลด h = dht.readHumidity(); float t = dht.readTemperature(); float 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();//attach ขัดจังหวะอีกครั้ง } sleep(); // เข้าสู่โหมดสลีปในตอนท้ายเสมอ } void drawScreen() { //วาดกรอบข้อความหลักสำหรับ (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("อุณหภูมิ:"); oled.setCursor(4, 3); oled.print("ฮัม:"); oled.setCursor(4, 5); oled.print("ความรู้สึก:"); }
ขั้นตอนที่ 4: บทสรุป
A pesar de su tamaño ไม่มีนัยสำคัญ, 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. ดิโชซาเมนเต
ที่มีอยู่ otras librías para las pantallas OLED ห้องสมุด GFX ของ Adafruit ไม่มีใบอนุญาต รวบรวมไว้ล่วงหน้า รถโดยสารประจำทางสำหรับ el ATtiny, pero มีอยู่ otras librías y soluciones que son interesantes de explorer
El consumo del dispositivo es muy bajo. พิจารณาจากการใช้ค่าคงที่, ค่าคงที่และค่าประมาณการแบตเตอรี่ 3000mAh (NiMH หรือ 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 forgetado 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 นายกเทศมนตรี que ที่สอดคล้องกัน al de la segunda imagen El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto ข้อเท็จจริง
ขั้นตอนที่ 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…
embeddedthoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
แนะนำ:
Christmas Star Neopixel Attiny85 ที่ใหญ่ขึ้นและปรับปรุง: 3 ขั้นตอน (พร้อมรูปภาพ)
ดาวคริสต์มาสที่ใหญ่ขึ้นและปรับปรุงให้ดีขึ้น Neopixel Attiny85: ปีที่แล้วฉันสร้างดาวคริสต์มาสที่พิมพ์ 3 มิติขนาดเล็ก ดู https://www.instructables.com/id/Christmas-Star-LE…ปีนี้ฉันสร้างดาวที่ใหญ่ขึ้นจากเกลียวคลื่น ที่ 50 Neopixels (5V WS2811) ดาวดวงที่ใหญ่กว่านี้มีรูปแบบมากขึ้น (ฉันยังคงเพิ่มและด้นสด
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: 7 ขั้นตอน
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: หรือ: ใช้งาน Arduino กับเซลล์แบบเหรียญ 2032 เป็นเวลา 2 ปี การใช้บอร์ด Arduino Digispark ของคุณออกจากกล่องพร้อมกับโปรแกรม Arduino จะดึงกระแส 20 mA ที่ 5 โวลต์ด้วยพาวเวอร์แบงค์ 5 โวลต์ของ 2000 mAh ใช้งานได้เพียง 4 วัน
ATtiny85 การติดตามกิจกรรมการสั่นที่สวมใส่ได้นาฬิกาและการเขียนโปรแกรม ATtiny85 พร้อม Arduino Uno: 4 ขั้นตอน (พร้อมรูปภาพ)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 With Arduino Uno: จะสร้างนาฬิกาติดตามกิจกรรมที่สวมใส่ได้อย่างไร? นี่คืออุปกรณ์สวมใส่ที่ออกแบบมาเพื่อให้สั่นเมื่อตรวจพบการหยุดนิ่ง คุณใช้เวลาส่วนใหญ่กับคอมพิวเตอร์เหมือนฉันหรือเปล่า คุณนั่งเป็นชั่วโมงโดยไม่รู้ตัวหรือไม่? จากนั้นอุปกรณ์นี้จะเ
Flappy Bird บน ATtiny85 และ OLED Display SSD1306: 6 ขั้นตอน (พร้อมรูปภาพ)
Flappy Bird บน ATtiny85 และ OLED Display SSD1306: สวัสดีทุกคน วันนี้ฉันจะแสดงโคลนนกแบบพื้นฐานที่ฉันสร้างขึ้นให้คุณดู และวิธีที่คุณจะทำเกมที่คล้ายกันนี้ โดยพื้นฐานแล้วฉันจะใช้รหัสของฉันกับคุณและอธิบายว่ามันทำงานอย่างไรในทุกขั้นตอน เกมนี้สร้างขึ้นเพื่อรั
นามบัตร/เกมคอนโซล: ATtiny85 และหน้าจอ OLED: 5 ขั้นตอน (พร้อมรูปภาพ)
นามบัตร/คอนโซลเกม: ATtiny85 และหน้าจอ OLED: สวัสดีทุกคน! วันนี้ผมจะแสดงให้คุณเห็นว่าคุณสามารถสร้างนามบัตร/เกมคอนโซล/อะไรก็ตามที่คุณจินตนาการได้ว่ามีจอภาพ I2C OLED เรืองแสงและไมโครโปรเซสเซอร์ ATtiny85 ในคำแนะนำนี้ ฉันจะบอกคุณว่า PCB ที่ฉันออกแบบ