Digispark ATtiny85 e AT24C256 (Base para Projetos com ESP32)

 Aprenda como criar um dispositivo USB inteligente com Digispark ATtiny85 capaz de armazenar e exibir automaticamente uma lista de medicamentos no computador utilizando a memória AT24C256.

Dispositivo USB com Digispark ATtiny85 exibindo lembrete de remédios no computador usando memória AT24C256 e comunicação I2C
Projeto com Digispark ATtiny85 e memória AT24C256 que exibe automaticamente uma lista de medicamentos no computador via USB utilizando protocolo I2C.

👉 Um projeto simples, útil e perfeito para automação pessoal!


📌 Introdução

Manter o controle dos horários de medicamentos é essencial, mas na correria do dia a dia isso pode ser difícil.

Com este projeto, você cria um lembrete automático via USB:

✔ Conectou no PC → funciona sozinho
✔ Abre o bloco de notas
✔ Exibe sua lista de remédios automaticamente

💡 Ideal para uso pessoal, idosos ou automação doméstica.


⚙️ Como funciona o projeto

O Digispark ATtiny85 atua como um teclado USB (HID), digitando automaticamente no computador.

🔄 Fluxo do sistema:

  1. Os dados são armazenados na AT24C256
  2. O Digispark lê via I2C
  3. Ao conectar no PC:
    • Abre o Notepad
    • Digita a lista automaticamente

🔌 Componentes necessários

  • Digispark ATtiny85
  • EEPROM AT24C256 (32KB)
  • 2 resistores 4.7kΩ
  • Jumpers
  • Placa ilhada (dupla face)
👉link para driver
  https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip

👉Gerenciadores de Placa do Arduino:
   https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

🔧 Ligações do circuito

Digispark ATtiny85 gravando dados na memória EEPROM AT24C256 via comunicação I2C com pinos SDA e SCL identificados
Imagem mostrando o Digispark ATtiny85 conectado à memória AT24C256
durante o processo de gravação de dados via protocolo I2C .


📍 Conexões principais

AT24C256   Digispark
VCC        →    5V
GND        →    GND
SDA         →     P0
SCL          →     P2
WP           →     GND

⚠️ Resistores Pull-up (OBRIGATÓRIO)

  • SDA → resistor 4.7kΩ para VCC
  • SCL → resistor 4.7kΩ para VCC

👉 Garantem:

  • Comunicação estável
  • Evitam falhas no I2C
  • Melhor desempenho

💊 Exemplo de lista de remédios

Paracetamol - 08:00
Ibuprofeno - 12:00
Omeprazol - 07:00
Dipirona - 18:00
Vitamina D - 09:00
Losartana - 10:00
Aspirina - 14:00
Amoxicilina - 16:00
Loratadina - 20:00
Metformina - 22:00

💾 Memória AT24C256 + I2C

Pinagem da memória AT24C256 com identificação dos pinos SDA, SCL, VCC, GND e endereçamento I2C
Diagrama dos pinos da memória EEPROM AT24C256,
barramento I2C e seleção de endereço (A0, A1, A2).

A AT24C256 é uma memória não volátil muito usada em projetos Arduino e embarcados.

🔍 Características:

  • Capacidade: 32 KB
  • Interface: I2C
  • Endereçamento: 0x0000 a 0x7FFF
  • Ciclos de escrita: ~1 milhão

👉 Permite armazenar 50 a 200 remédios facilmente


🔌 Entendendo o I2C (rápido e direto)

O I2C usa apenas 2 fios:

  • SDA → dados
  • SCL → clock

🧠 Conceitos:

✔ Mestre e escravo
✔ Endereço único por dispositivo
✔ Comunicação simples e eficiente


🧠 Endereço da AT24C256

  • Faixa: 0x50 a 0x57
  • Com A0=A1=A2=0 → 0x50
No código definimos o endereço 0x50.
👉 #define EEPROM_ADDR 0x50

🤖 Memória do Digispark ATtiny85

TipoTamanho
Flash        →    ~6 KB úteis
SRAM      →     512 bytes
EEPROM →   512 bytes

👉 Comparação:

MemóriaTamanho
EEPROM interna        →      512 bytes
AT24C256                   →      32.768 bytes

🚀 A AT24C256 é 64x maior!


💻 Código para gravar na EEPROM

/* ========================================================= Projeto: Gravador de Dados na EEPROM AT24C256 Plataforma: Digispark ATtiny85 Autor: RodRobot Descrição: Este código grava uma lista de medicamentos com horários na memória EEPROM AT24C256 utilizando comunicação I2C. Hardware: - Digispark ATtiny85 - EEPROM AT24C256 - Resistores 4.7kΩ (pull-up em SDA e SCL) Ligações: SDA -> P0 SCL -> P2 VCC -> 5V GND -> GND Observação: Execute este código apenas uma vez para gravar os dados. ========================================================= */ #include <TinyWireM.h> #define EEPROM_ADDR 0x50 const char dados[] = "Paracetamol - 08.00h\n" "Ibuprofeno - 12.00h\n" "Omeprazol - 07.00h\n" "Dipirona - 18.00h\n" "Vitamina D - 09.00h\n" "Losartana - 10.00h\n" "Aspirina - 14.00h\n" "Amoxicilina - 16.00h\n" "Loratadina - 20.00h\n" "Metformina - 22.00h\n"; void setup() { TinyWireM.begin(); for (unsigned int i = 0; i < sizeof(dados); i++) { escreverEEPROM(i, dados[i]); delay(5); // tempo necessário para escrita } } void loop() {} void escreverEEPROM(unsigned int endereco, char dado) { TinyWireM.beginTransmission(EEPROM_ADDR); TinyWireM.write((int)(endereco >> 8)); TinyWireM.write((int)(endereco & 0xFF)); TinyWireM.write(dado); TinyWireM.endTransmission(); }


💻 Código para leitura e envio ao PC

/* ========================================================= Projeto: Dispositivo USB Lembrete de Remédios Plataforma: Digispark ATtiny85 Autor: RodRobot Descrição: Este projeto utiliza o Digispark como teclado USB (HID) para exibir automaticamente uma lista de medicamentos armazenados na EEPROM AT24C256. Funcionamento: - Ao conectar no PC - Abre o Bloco de Notas - Exibe a lista de remédios automaticamente Hardware: - Digispark ATtiny85 - EEPROM AT24C256 - Resistores 4.7kΩ (SDA e SCL) Ligações: SDA -> P0 SCL -> P2 VCC -> 5V GND -> GND Aviso: Uso apenas educacional. Não utilize sem autorização. ========================================================= */ #include <TinyWireM.h> #include <DigiKeyboard.h> #define EEPROM_ADDR 0x50 void setup() { TinyWireM.begin(); // Aguarda reconhecimento USB DigiKeyboard.delay(3000); abrirNotepad(); mostrarDados(); } void loop() {} void abrirNotepad() { DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); DigiKeyboard.delay(500); DigiKeyboard.print("notepad"); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.delay(1000); } void mostrarDados() { DigiKeyboard.println("Lembrete de Remedios"); DigiKeyboard.println("---------------------"); for (int i = 0; i < 400; i++) { char c = lerEEPROM(i); if (c == 0xFF) break; DigiKeyboard.print(c); } } char lerEEPROM(unsigned int endereco) { TinyWireM.beginTransmission(EEPROM_ADDR); TinyWireM.write((int)(endereco >> 8)); TinyWireM.write((int)(endereco & 0xFF)); TinyWireM.endTransmission(); TinyWireM.requestFrom(EEPROM_ADDR, 1); return TinyWireM.read(); }


📈 Vantagens do projeto

✔ Baixo custo
✔ Fácil de montar
✔ Portátil (USB)
✔ Alta utilidade
✔ Expansão de memória


🚀 Possíveis melhorias

  • Display OLED
  • Buzzer para alertas
  • Botões de navegação
  • Versão com Wi-Fi (ESP32)
  • Interface para editar dados

⚠️ Aviso importante

Este projeto é apenas para fins educacionais.

👉 Não utilize dispositivos USB automatizados sem autorização.
👉 Sempre siga orientação médica para uso de medicamentos.


🧭 Conclusão

Com o Digispark ATtiny85 e a AT24C256, você cria um sistema simples, eficiente e extremamente útil.

💡 Um ótimo exemplo de como a eletrônica pode resolver problemas reais do dia a dia!


🔧 Acompanhe o RodRobot

Projetos maker com ESP32, Arduino, eletrônica e programação.

RodRobot – Projetos maker, eletrônica e programação na prática.

Comentários

Postagens mais visitadas deste blog

ESP32 Botão Touch: Como Usar o Sensor Touch (Tutorial com LED e Relé)

1. Como Medir a Intensidade do Sinal Wi-Fi no ESP32 (RSSI em dBm) (Código e Projeto) - com Display OLED SSD1306