MyTetra Share
Делитесь знаниями!
пример проекта интернет-радио на ESP8266
Время создания: 24.05.2025 13:38
Автор: alensav
Текстовые метки: интернет-радио
Раздел: FRAM
Запись: alensav/MyTetra2/main/base/1748083123085tphtkjs/text.html на raw.githubusercontent.com

Qwen3-235B-A22B1:35 PM

Отлично! Я подготовлю пример проекта интернет-радио на ESP8266 с использованием:

  • Wi-Fi
  • FM24CL64B x2 (FRAM) — для хранения текущей станции и логов
  • microSD — для хранения изображений (обложки)
  • TFT ST7735 1.8" (128x160) — для отображения информации
  • Аудио через PWM/DAC



📦 Компоненты


МОДУЛЬ

ИНТЕРФЕЙС

ПИНЫ (ПРЕДЛОЖЕННЫЕ)

ESP8266 (NodeMCU)

-

-

FM24CL64B x2

I²C

SDA: D2 (GPIO4), SCL: D1 (GPIO5)

microSD

SPI

MOSI: D7, MISO: D6, SCK: D5, CS: D8

TFT ST7735

SPI

MOSI: D7, SCK: D5, DC: D3, RST: D4, CS: D0

Динамик

PWM / DAC

A0 (аналоговый) или D9 (цифровой вывод звука)

⚠️ В зависимости от конкретного модуля ESP8266 (например, NodeMCU, Wemos D1 Mini), пины могут отличаться. Убедитесь, что у вас нет конфликтов SPI/I²C.


🧩 Библиотеки Arduino IDE

Установите следующие библиотеки через Library Manager (Sketch → Include Library → Manage Libraries):

  1. ESP8266Audiohttps://github.com/earlephilhower/ESP8266Audio
  2. Adafruit ST7735 and ST7789 Library
  3. Adafruit GFX Library
  4. SdFat – для работы с SD-картой
  5. Wire – для FRAM
  6. ESP8266WiFi



📄 Пример скетча

cpp

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

#include <ESP8266WiFi.h>

Wire.write(data);

Wire.endTransmission();

}


byte readByte(uint8_t devAddr, uint16_t memAddr) {

Wire.beginTransmission(devAddr);

Wire.write((int)(memAddr >> 8));

Wire.write((int)(memAddr & 0xFF));

Wire.endTransmission();

Wire.requestFrom(devAddr, 1);

return Wire.read();

}


// === Функция отображения обложки с SD ===

void showCover(const char *filename) {

File bmpFile = SD.open(filename);

if (!bmpFile) {

tft.println("Файл не найден");

return;

}


// Здесь можно добавить BMP-парсер или использовать готовую библиотеку

// Для примера просто выводим имя файла

tft.println("Обложка загружена:");

tft.println(filename);


bmpFile.close();

}



📌 Что дальше?

✅ Возможные доработки:

  • Добавить кнопки управления (следующая станция, громкость).
  • Реализовать чтение ID3-тегов из потока.
  • Сохранять текущее состояние в FRAM при перезагрузке.
  • Логировать ошибки подключения в FRAM.
  • Кэшировать метаданные в FRAM, чтобы не читать с SD каждый раз.



📦 Как собрать устройство:

  1. Соберите схему по предложенным пинам.
  2. Прошейте ESP8266 этим скетчем.
  3. Залейте на SD-карту файл cover.bmp.
  4. Подключите динамик к PWM/A0.
  5. Подключите питание 3.3 В ко всем компонентам.



📢 Хочешь продолжить?

Могу помочь:

  • Добавить вывод названия трека и станции на экран.
  • Реализовать логирование событий в FRAM .
  • Настроить работу с несколькими станциями и сохранение выбора пользователя.
  • Оптимизировать использование памяти и пинов.

Просто напиши:
👉 «Хочу реализовать X» , где X — нужная тебе функция.

 
MyTetra Share v.0.67
Яндекс индекс цитирования