Contr1
ControllerSetting1
ESP8266WifiSettingsRoot1
0@0
LibraryRoot
LibraryGroup-Оформление
LibraryGroup-Базовые элементы
LibraryGroup-Триггеры
LibraryGroup-Таймеры
LibraryGroup-UART
0@-399
330
-140@-350
169
284
0@-84
root
input
globalVariable
2
42b07470-926e-46b7-99b1-6e412ad96112
LibraryGroup-OLED дисплей
LibraryGroup-OLED для ESP8266
0@-315
1
5
Подключение к сети WiFi с помощью WiFi Manager
170@40
170@40 corner: 335.0d@120
WiFiManager
WiFiManager
en
23914357-9274-477e-a4fb-960fa228a656
de2fb2a6-cf7b-4ffd-b42b-64d890603106
WiFiManager
ResetSettinges
d2ade5b8-f459-414d-8389-a368e1a74239
1292cc64-252b-4fe1-9634-ac08d8034d0e
SSIDStr
0bfe99b8-e35b-4eca-91f2-1d159d87e591
5a45d68a-3b6c-421e-8956-4332369be552
PasswStr
9c8140cd-97b4-4f62-9c0d-330714a09b9d
03f52ed5-6e90-48ed-9b0b-6da7ce8cda07
e455dd5a-23d0-499a-9a6d-2fc0ba2aed38
WiFiManager
Этот блок базовый, все остальные применять вставляя в проект вместе с этим блоком.
freg - период в микросекундах для вызова ScanDMD. Если больше 5000 (5 мс), можете видеть мерцание.
183
wide
3
Кол-во панелей по ширине
d02e355b-ebce-465c-ac09-827a5f1ff76c
28981250-ca35-47ca-b80f-577f1cea6d29
higt
1
Кол-вопанелей по высоте
a57e79ef-fa57-44e2-9486-d664bdd6f1a6
acd57f23-e1c5-418c-ab6a-060dc03f4fe2
freg
1000
a21ba692-e27e-4b6b-96c2-ae8c0583f116
7c21bebc-1336-4140-848a-a19914608512
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.autoConnect("AutoConnectAP");
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
146
#include
<DNSServer.h>
#include
<ESP8266WebServer.h>
#include
<WiFiManager.h>
ssidStr
[30];
char
passwStr
[30];
char
dmd.scanDisplayBySPI();
23
void
ScanDMD
a9b2f9ff-ae73-4e3a-a759-64afffdf5f6d
if (ResetSettinges) wifiManager.resetSettings();
48
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.autoConnect("AutoConnectAP");
//wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
251
fd7d182b-ec32-4917-a880-ef8fbdcb982f
WiFiManager
if (en) {
if (start) { start = false;
WiFiManager wifiManager;
wifiManager.autoConnect("AutoConnectAP");
//wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
}
}
else if (ResetSettinges) wifiManager.resetSettings();
417
Serial.begin(115200);
24
#include
<DNSServer.h>
#include
<ESP8266WebServer.h>
#include
<WiFiManager.h>
ssidStr
[30];
char
passwStr
[30];
char
start
= true;
bool
setIPAdr
dbda5d35-f52a-43c5-bb66-05285c07c2e7
3b27fc88-6bf5-44c3-9c30-3e62b6ec6c90
aac4c7a4-aa58-46be-a876-02b8d4c9a8ec
if (en) {
if (start) { start = false;
WiFiManager wifiManager;
if (ResetSettinges) wifiManager.resetSettings();
wifiManager.autoConnect("AutoConnectAP");
if (setIPAdr) wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
}
}
416
#include
<DNSServer.h>
#include
<ESP8266WebServer.h>
#include
<WiFiManager.h>
ssidStr
[30];
char
passwStr
[30];
char
start
= true;
bool
IPStr
f20b8f6b-8947-42fe-bef4-612e31493c4f
b2798508-a6a4-4823-8ed0-089a9bf5d460
538e13f6-cc95-422c-a724-2e5be105a375
WiFiManager
Входы:
ResetSettinges - удаление сохраненных параметров сетей.
setIPAdr - Установка своего IP адреса, по умолчанию(если не включена адрес-192.168.4.1), если включена 10.0.1.1 (в параметрах писать через запятую, так 10,0,1,1
Выходы:
SSIDStr - Имя сети, куда подключен ЕСП.
PasswStr - Пароль этой же сети.
Параметры:
SSID_ESP, Password_ESP - Имя и пароль точки доступа, который создается ЕСП при включении, по умолчанию - AutoConnectAP и password.
Пароль Wi-Fi должен состоять из 8 до 63 ASCII-закодированных символов в диапазоне от 32 до 126 (десятичный), иначе доступ будет без пароля. Например, если 12345678 вход по этому паролю, если 1234567, то вход будет без пароля, тк количество символов меньше восьми.
713
SSID_ESP
AutoConnectAP
f438a708-7ceb-4183-93fd-664e62c382d9
237ea0a5-9124-42f7-a46a-972ca18b003b
Password_ESP
password
1eeeac6f-0e45-4bfe-ab04-110f1690e278
12345678
9b41aedf-dbe9-406b-b025-779936056dd9
timeout
180
26e77d67-4c17-4969-9d52-8a9756dc77ce
11dc377c-d010-4b6f-8460-30da06265ede
ip_adress
10,0,1,1
8cee1848-3f01-47c1-92cc-5ff6faee7a6a
8b0db8cd-e69d-4e66-83c6-e17a6060192f
if (en) {
if (start) { start = false;
WiFiManager wifiManager;
if (ResetSettinges) {wifiManager.resetSettings();
delay(1000);
ESP.reset();
delay(5000);
}
wifiManager.setAPCallback(configModeCallback);
wifiManager.setTimeout(timeout);
if (setIPAdr) wifiManager.setAPStaticIPConfig(IPAddress(ip_adress), IPAddress(ip_adress), IPAddress(255,255,255,0));
if ( !wifiManager.autoConnect(SSID_ESP, Password_ESP)) {
Serial.println("failed to connect and hit timeout");
delay(3000);
ESP.reset();
delay(5000);
} Serial.println("connected...yeey :)");
ticker.detach();
digitalWrite(BUILTIN_LED, LOW);
}
IPStr = WiFi.localIP()
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
}
889
Serial.begin(115200);
pinMode(BUILTIN_LED, OUTPUT);
ticker.attach(0.6, tick);
80
#include
<DNSServer.h>
#include
<ESP8266WebServer.h>
#include
<WiFiManager.h>
#include
<Ticker.h>
ticker
;
Ticker
ssidStr
[30];
char
passwStr
[30];
char
start
= true;
bool
int state = digitalRead(BUILTIN_LED); // get the current state of GPIO1 pin
digitalWrite(BUILTIN_LED, !state);
116
void
tick
Serial.println("Entered config mode");
Serial.println(WiFi.softAPIP());
//if you used auto generated SSID, print it
Serial.println(myWiFiManager->getConfigPortalSSID());
//entered config mode, make led toggle faster
ticker.attach(0.2, tick);
void
configModeCallback
WiFiManager
*myWiFiManager
295f64ea-66b0-4c3b-a778-2663f780b2b0
12345678
if (en) {
if (start) { start = false;
WiFiManager wifiManager;
if (ResetSettinges) {wifiManager.resetSettings();
delay(1000);
ESP.reset();
delay(5000);
}
wifiManager.setAPCallback(configModeCallback);
wifiManager.setTimeout(timeout);
if (setIPAdr) wifiManager.setAPStaticIPConfig(IPAddress(ip_adress), IPAddress(ip_adress), IPAddress(255,255,255,0));
if ( !wifiManager.autoConnect(SSID_ESP, Password_ESP)) {
Serial.println("failed to connect and hit timeout");
delay(3000);
ESP.reset();
delay(5000);
} Serial.println("connected...yeey :)");
ticker.detach();
digitalWrite(BUILTIN_LED, LOW);
}
IPStr = WiFi.localIP().toString();
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
}
901
3
490@10
510@10 corner: 550@90
490@10 corner: 570@90
4
650@70
WLAN+IP
Q
1
2
-
3
125.0d
71.0d
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
13
620@290
640@290 corner: 764.0d@410
620@290 corner: 784.0d@410
646.5d@304.5d
En
620@320
634@320
ESP_RADIO_onlinе_5.2
EN
583cb09d-a9c7-4119-8d90-ae6324e00899
02cb4dcb-1316-462f-a232-67875efbf524
ESP_RADIO_onlinе_1.2
ESP8266 RADIO
ON
8389aad5-e0af-485a-9899-94cd2fd21899
fbdbd2db-8fae-48af-921c-4bea960effdc
f2d97d12-ebdf-4f30-889d-ef3ea6a53ddf
ESP8266 RADIO
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
Вход network - URL радиостанции, по умолчанию http: //jazz.streamr.ru/jazz-64.mp3
Папраметры: length_str - длина строки, принят 30.
network - название точки доступа на ESP8266, я назвал esp_radio, можете поменять.
При подключении ESP8266 к питанию создается точка доступа esp_radio, при подключении к нему открывается в веб браузере страница, в котором нужно поставить название вашей wi fi сети и пароль, ESP подключится к нему и заработает радио по умолчанию.
Некоторые радиостанции:
http://kpradio.hostingradio.ru:8000/
http://radio.horoshee.fm:8000/mp3
http://kpradio.hostingradio.ru:8000/russia.radiokp128.mp3
http://fomenkofm.hostingradio.ru:8002/fomenkoradio128.mp3
http://icecast.russkoeradio.cdnvideo.ru:8000/rr_m.mp3
http://music.myradio.ua/rep128.mp3
http://jazz.streamr.ru/jazz-128.mp3
http://87.110.219.34:8000/swhmp3
http://87.110.219.34:8000/plusmp3
http://91.90.255.111:80/MixFM_96
https://nashe1.hostingradio.ru:18000/nashe20-64.mp3
http://jazz.streamr.ru/jazz-64.mp3
1084
radiostation
jazz.streamr.ru/jazz-64.mp3h
2d2ef667-20e6-4931-b1de-e514800489e2
322a8bbb-7673-49ef-aa15-16e7e13454fd
if (ON) {
if (newUrl) {newUrl = false;
AUDIO_init();
}
handleAudio();
}
104
system_update_cpu_freq(SYS_CPU_160MHZ);
Serial.begin(115200);
68
#include
<Arduino.h>
*URL
= radiostation;
#include <ESP8266WiFi.h>
#include "AudioFileSourceICYStream.h"
#include "AudioFileSourceBuffer.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"
const char
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
newUrl
= true;
bool
const char *ptr = reinterpret_cast<const char *>(cbData);
(void) isUnicode;
char s1[32], s2[64];
strncpy_P(s1, type, sizeof(s1));
s1[sizeof(s1)-1]=0;
strncpy_P(s2, string, sizeof(s2));
s2[sizeof(s2)-1]=0;
Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
Serial.flush();
295
void
MDCallback
void
*cbData
const char
*type
bool
isUnicode
const char
*string
const char *ptr = reinterpret_cast<const char *>(cbData);
char s1[64];
strncpy_P(s1, string, sizeof(s1));
s1[sizeof(s1)-1]=0;
Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
Serial.flush();
210
void
StatusCallback
void
*cbData
int
code
const char
*string
static int lastms = 0;
if (mp3->isRunning()) {
if (millis()-lastms > 1000) {
lastms = millis();
Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {
Serial.printf("MP3 done\n");
delay(1000);
Serial.printf("Buffering restart");
ESP.restart();
}
344
void
handleAudio
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, 4096);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
357
void
AUDIO_init
radiostation
b8cb5e21-2cae-4448-8903-34b347244e35
6d831ec3-1bb3-48bd-b5c2-2582ae017c49
c9ebc3ba-0b56-44e6-aa5b-2f592dbfbbb3
ESP8266 радио онлайн_1.2
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
radiostation - URL радиостанции, по умолчанию http: //jazz.streamr.ru/jazz-64.mp3
Buff - буфер 2048, лучше 4096 или 8196, выбирать в зависимости от памяти ESP8266.
Некоторые радиостанции(не проверены):
http://kpradio.hostingradio.ru:8000/
http://radio.horoshee.fm:8000/mp3
http://kpradio.hostingradio.ru:8000/russia.radiokp128.mp3
http://fomenkofm.hostingradio.ru:8002/fomenkoradio128.mp3
http://icecast.russkoeradio.cdnvideo.ru:8000/rr_m.mp3
http://music.myradio.ua/rep128.mp3
http://jazz.streamr.ru/jazz-128.mp3
http://87.110.219.34:8000/swhmp3
http://87.110.219.34:8000/plusmp3
http://91.90.255.111:80/MixFM_96
https://nashe1.hostingradio.ru:18000/nashe20-64.mp3
http://jazz.streamr.ru/jazz-64.mp3
803
Buff
2048
da5d8133-740a-42e7-85d4-8faa46a5da7a
5120
aa8d1ea8-4112-4431-96f1-294744687bd7
if (ON) {
if (newUrl) {
newUrl = false;
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, Buff);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
}
handleAudio();
}
540
system_update_cpu_freq(SYS_CPU_160MHZ);
//Serial.begin(115200);
70
#include
<Arduino.h>
#include
<ESP8266WiFi.h>
#include
"AudioFileSourceICYStream.h"
#include
"AudioFileSourceBuffer.h"
#include
"AudioGeneratorMP3.h"
#include
"AudioOutputI2SNoDAC.h"
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
*URL
= "";
const char
newUrl
= true;
bool
rs_str
[60];
char
const char *ptr = reinterpret_cast<const char *>(cbData);
(void) isUnicode; // Punt this ball for now
// Note that the type and string may be in PROGMEM, so copy them to RAM for printf
char s1[32], s2[64];
strncpy_P(s1, type, sizeof(s1));
s1[sizeof(s1)-1]=0;
strncpy_P(s2, string, sizeof(s2));
s2[sizeof(s2)-1]=0;
Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
Serial.flush();
406
const char *ptr = reinterpret_cast<const char *>(cbData);
// Note that the string may be in PROGMEM, so copy it to RAM for printf
char s1[64];
strncpy_P(s1, string, sizeof(s1));
s1[sizeof(s1)-1]=0;
Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
Serial.flush();
285
static int lastms = 0;
if (mp3->isRunning()) {
if (millis()-lastms > 1000) {
lastms = millis();
Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {
Serial.printf("MP3 done\n");
delay(1000);
Serial.printf("Buffering restart");
ESP.restart();
}
348
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, Buff);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
350
newUrl
f4b8e8bb-1ad6-444f-9e89-b843626c648e
4d16261b-d172-4206-9aff-211fdf3bf018
df402981-0392-45e3-b0d0-c955bc066042
system_update_cpu_freq(SYS_CPU_160MHZ);
//Serial.begin(115200);
//newUrl= true;
85
#include
<Arduino.h>
#include
<ESP8266WiFi.h>
#include
"AudioFileSourceICYStream.h"
#include
"AudioFileSourceBuffer.h"
#include
"AudioGeneratorMP3.h"
#include
"AudioOutputI2SNoDAC.h"
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
*URL
= "";
const char
rs_str
[60];
char
ESP_RADIO_onlinе_1.4.1
Buff
fc1de471-3bcb-49fc-a916-4bc82b7c5416
10c7d5a2-bb3f-42a1-a351-72272e17ec23
6b67b80c-ef1b-4323-9d5b-dc7f3b48b8ce
ESP8266 радио онлайн_1.4.1
if (newUrl)
{
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, Buff);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
}
handleAudio();
523
system_update_cpu_freq(SYS_CPU_160MHZ);
//Serial.begin(115200);
static int lastms = 0;
if (mp3->isRunning()) {
if (millis()-lastms > 1000) {
lastms = millis();
Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {
Serial.printf("MP3 done\n");
delay(1000);
Serial.printf("Buffering restart");
ESP.restart();
}
d98ac68c-07f9-4f99-bb06-0507552287fd
ESP8266 радио онлайн_5.2
if (EN)
{
if (newUrl)
{ out = NULL;
if (mp3) {
mp3->stop();
delete mp3;
mp3 = NULL;
}
if (buff) {
buff->close();
delete buff;
buff = NULL;
}
if (file) {
file->close();
delete file;
file = NULL;
}
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, Buff);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
}
handleAudio();
}
754
static int lastms = 0;
if (mp3->isRunning()) {
if (millis()-lastms > 1000) {
lastms = millis();
Serial.printf("Running for %d ms...\n", lastms);
Serial.flush();
}
if (!mp3->loop()) mp3->stop();
} else {
Serial.printf("MP3 done\n");
delay(1000);
Serial.printf("Buffering restart");
ESP.restart();
}
342
620@310 corner: 634@330
11
6
270@310
290@310 corner: 370@350
270@310 corner: 390@350
296.5d@324.5d
10
140@290
160@290 corner: 240@350
140@290 corner: 260@350
182.5d@303.5d
8
40@310
60@310 corner: 76.0d@330
40@310 corner: 96.0d@330
96.0d@320
8.0d
+
GPIO-13
D7
172840762
82.0d@320
96.0d@320 corner: 96.0d@320
C+
140@320
160@320
9
40@330
60@330 corner: 73.0d@350
40@330 corner: 93.0d@350
93.0d@340
5.0d
-
12
GPIO-12
D6
33396438
79.0d@340
93.0d@340 corner: 93.0d@340
C -
140@340
160@340
260@340
twoInputs
0
V
10.0d
240@340
15
7
280@450
300@450 corner: 340@490
280@450 corner: 360@490
303.5d@463.5d
280@480
16
25
650@450
670@450 corner: 750@490
650@450 corner: 770@490
675.5d@464.5d
650@470 corner: 670@490
17
38
970@330
990@330 corner: 1030@450
970@330 corner: 1050@450
1001.5d@343.5d
29
820@40
840@40 corner: 920@80
820@40 corner: 940@80
845.5d@54.5d
720@60
740@60 corner: 795.0d@80
720@60 corner: 815.0d@80
744@73.5d
720@70
740@70
720@60 corner: 740@80
795.0d@60 corner: 815.0d@80
815.0d@70
7.0d
47.0d
0.0d
795.0d@70
40
1170@410
1190@410 corner: 1318.0d@590
1170@410 corner: 1338.0d@590
1195.0d@424.5d
18
27
1050@410
1070@410 corner: 1130@450
1050@410 corner: 1150@450
1089.0d@423.5d
Q
9.0d
1030@440
1050@440
1050@440 corner: 1050@440
EN
1050@440
1070@440
1050@430 corner: 1070@450
1130@430 corner: 1150@450
1150@440
Q
1130@440
1150@440 corner: 1150@440
On_disp
1170@440
1190@440
OLED_ESP8266
1d48aae5-9c92-46f3-bfa0-6bab50f0c633
8c929a35-ea67-4c54-b987-c5df1e53da28
in_text1
7cc0a95f-2ecf-4243-8378-12f70db0e942
97bac96d-96f9-463d-8f2c-172e398c8ab9
in_text2
8fc7d50b-7761-4fdb-8f5d-5f7b44bca27c
5421d990-bacc-4afb-9b44-3a72af5e3a6f
597f7b61-dd30-4f52-959c-8d79fb7a4006
OLED дисплей для ESP8266
adr_disp
0x3c
b0ddf809-0fc1-4c62-ab33-6ddbdec119fa
e57209cb-a0d2-48e2-bfaa-2e9846f77554
pin_SDA
4
D2 (или если Gpio4 = 4)
7aff3882-fe41-46e7-8788-e802c5775189
0e038d65-a7d9-40f9-bf7f-c86e0b127d30
pin_SCK
14
D5 (или если Gpio14 = 14)
3aa387e0-73d6-48b6-993b-6345ca02472e
54dae8c3-aa77-4f2d-8305-a665612915ba
User_text
ESP8266
cd0371fc-574b-4195-8158-3b478a8f1aaa
c5d7905a-7a6b-4762-8b2b-2e16089043cc
text_font1
ArialMT_Plain_10
ArialMT_Plain_10, ArialMT_Plain_16, ArialMT_Plain_24
dd72f468-6093-4851-96c0-b92833b09547
42ab902c-e61d-493c-a055-5e00fa03ab56
x1
39e8d183-0a8e-4104-9559-432e73f52365
17491d47-b205-4f5b-808c-2a45946fe300
y1
da3167d1-0f80-407c-976d-ec36ed7f2164
8bcc010b-1f70-4504-88e4-9289fd34dd18
text_font2
ArialMT_Plain_10
4f83faca-e280-4e94-a71e-bd9c391f1d96
3dfea17f-caf3-41a6-8d6b-8d62bad1b9f4
x2
b2493791-f5d1-4bf9-b72d-f9a923fde982
9bdd6cce-8e7d-4e67-9a05-e395d460dc1d
y2
a8030ef9-aeb5-43e6-ab1c-96ce3267161b
ed66eda3-dc2d-4d04-ad0c-6e81800bb1d7
if (On_disp) {display.clear();
display.setFont(text_font1);
display.drawString(x1, y1, in_text1);
display.setFont(text_font2);
display.drawString(x2, y2, in_text2);
display.display();
}
217
display.init();
display.flipScreenVertically();
display.setContrast(255);
display.setTextAlignment(TEXT_ALIGN_CENTER_BOTH);
display.setFont(ArialMT_Plain_24);
display.drawString(display.getWidth()/2, display.getHeight()/2, "User_text");
display.display();
delay (2000);
269
#include
<Wire.h>
не нужный дисплей комментировать:
#include
"SH1106.h"
display
(adr_disp, pin_SDA, pin_SCK);
SH1106
#include "SSD1306.h"
SSD1306Wire display(adr_disp, pin_SDA, pin_SCK);
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
616
String
utf8rus
String
source
1170@460
720@130
740@130 corner: 780@210
720@130 corner: 800@210
745.0d@143.5d
460@90
480@90 corner: 570.0d@170
460@90 corner: 590.0d@170
485.0d@104.0d
30@80
50@80 corner: 130@240
30@80 corner: 150@240
62.0d@94.0d
CR
16.0d
130@110
150@110
150@130
Month
460@140
480@140
TIME=00:00
H
c08cf066-92c1-4ba7-b3d7-fd0284c4c89d
65abe156-2a2c-4c1f-a95d-e11e81042fa1
M
ee26aa08-61e9-4887-a50c-f6d5278a225d
72068c38-9f8d-40c7-9f2e-7d8f1548694a
S
27f9842d-ac8c-4a65-9dd9-851707003fcc
6a0afe04-e57e-4384-b0d0-0a9d21ecc8f7
TIME
6e28c41e-0656-4e77-a99c-b156528ac448
d0d01355-2401-44bd-93bd-deb739dcb7fa
2abf7e9e-f694-4004-9a6f-0f6c6562894b
Время с нулями
time();
TIME = print(str(S/10),str(S%10));
35
void
time
6dde7e36-9450-47cc-8821-5ab1e338fd7c
150@140 corner: 150@150
Month
31.0d
130@150
150@150
Day
460@160
480@160
2848e85c-3af8-4ace-925d-cfb7e99ad9aa
150@160 corner: 150@170
Day
20.0d
130@170
150@170
460@170
480@170 corner: 554.0d@250
460@170 corner: 574.0d@250
489.0d@183.5d
460@190 corner: 480@210
Minute
34.0d
130@210
150@210
150@210 corner: 150@220
Minut
460@220
480@220
460@210 corner: 480@230
Second
37.0d
130@230
150@230
150@230 corner: 150@240
Second
460@240
480@240
90e05069-c111-4392-8e5e-a0ddb1d3f44d
460@230 corner: 480@250
720@200
740@200
574.0d@200 corner: 574.0d@240
27.0d
554.0d@240
574.0d@240
5eaa50ce-375d-4a63-a131-d07620f79fb4
554.0d@230 corner: 574.0d@250
460@200
T=00:00:00
Hour
900ee771-1ead-49c8-b686-854685790c78
Время строкой 00:00:00
Блок перевода времени в строку
в формате 00:00:00
rw6cm 22.11.16
66
TIME = (String( Hour / 10 )) + (String( Hour % 10 )) + (String(":"))
+ (String( Minut / 10 )) + (String( Minut % 10)) + (String(":"))
+ (String( Second / 10)) + (String( Second % 10 ));
191
74.0d
480@200
150@190 corner: 150@200
Hour
24.0d
130@190
150@190
ru.pool.ntp.org
30
1800
Year
25.0d
130@130
150@120 corner: 150@130
Year
460@120
480@120
590.0d@160
Data 00.00.0000
DATA
6997e9b9-4adf-4844-93f6-6a0a07d917c1
Дата строкой 00.00.0000
Блок перевода даты в строку
в формате 00:00:0000
Сделал aidar_i из блока
rw6cm 22.11.16
90
DATA = (String( Day / 10 )) + (String( Day % 10 )) + (String(".")) + (String( Month / 10 )) + (String( Month % 10)) + (String(".")) + (String(( Year / 1000)%10))+ (String(( Year / 100 )%10))+ (String(( Year / 10 )%10))+ (String( Year % 10 ));
242
90.0d
30.0d
570.0d@160
590.0d@160 corner: 590.0d@160
720@160
740@160
720@150 corner: 740@170
720@180
740@180
710.0d@182.0d
720@170 corner: 740@190
720@190 corner: 740@210
780@190 corner: 800@210
800@200
780@200
820@170
840@170 corner: 920@210
820@170 corner: 940@210
845.5d@184.5d
820@190 corner: 840@210
970@380
990@380
950@200 corner: 950@380
Ch Str
920@200
940@200
920@190 corner: 940@210
820@200
Value
840@200
800@200 corner: 800@480
1170@480
1190@480
singl_name
57.0d
764.0d@400
784.0d@400
ESP8266_WiFi_Radio_izm1
ESP8266_WiFi_RADIO_1
Volume
8f4922e6-0057-4ebb-906c-37a0ffc05631
b57e0b99-4d41-47e2-9b12-ebdc99d487d6
ba51b723-7e15-4ae6-a90f-feaeb14d0e9e
ESP8266 WiFi радио_1
if (En)
{r_stop=true;
if (newUrl || restartURL)
{ restartURL=false;
delete mp3;
delete buff;
delete file;
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
buff = new AudioFileSourceBuffer(file, Buff);
out = new AudioOutputI2SNoDAC();
out->SetGain((float)Volume);
Serial.printf_P(PSTR("Set volume: %d\n"), volume);
mp3 = new AudioGeneratorMP3();
mp3->begin(buff, out);
printRun=true;
}
if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop();
if (printRun ) {
printRun=false;
Serial.printf("Radio = play\n");
Serial.flush();
}
}
else {
Serial.printf("MP3 done\n");
restartURL = true;
}
}
else if (r_stop) {
r_stop=false;
Serial.printf("Radio = stop\n");
printRun=true;
}
1018
#include
<Arduino.h>
#include
<ESP8266WiFi.h>
#include
"AudioFileSourceICYStream.h"
#include
"AudioFileSourceBuffer.h"
#include
"AudioGeneratorMP3.h"
#include
"AudioOutputI2SNoDAC.h"
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
*URL
= "";
const char
rs_str
[60];
char
restartURL
=true;
bool
printRun
=false;
bool
r_stop
= false;
bool
ESP8266_WiFi_Radio_izm
next_rs
e2069a2f-0d57-48c3-a07c-4af8d9c3dbc9
ec1e3a0d-0d4a-4f41-bd7a-509fd8ec1616
c3c89ca6-6a68-476d-8367-7dd2e485fd30
ESP8266 WiFi Pадио_izm
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
radiostation - URL радиостанции
newUrl - запуск установленной радиостанции, (импульсный сигнал)
Buff - буфер 2048, лучше 4096 или 8196, выбирать в зависимости от памяти ESP8266.
Volume - уровень сигнала с выхода RX
Некоторые радиостанции (проверены, можно скопировать отсюда):
http://icecast.russkoeradio.cdnvideo.ru:8000/rr_m.mp3
http://jazz.streamr.ru/jazz-64.mp3
http://stream0.radiostyle.ru:8000/rapicom
http://nashe1.hostingradio.ru/rock-256
http://91.190.117.131:8000/live
http://online.radiorecord.ru:8102/sd90_128
http://icecast.vgtrk.cdnvideo.ru/kulturafm_mp3_128kbps
Цифры в конце URL (128kbps, 256) битрейт , ставьте не более 128, лучше еще меньше ,
чтобы не заикался. И уровень WiFi сети должна быть хорошей.
813
time
1000
250
039e50ce-87e6-4833-97ea-74c6042e5e57
2000
451739f7-8170-44db-bc23-391e41094018
if (En)
{r_stop=true;
if (newUrl || restartURL)
{ restartURL=false;
next_rs=false;
delete mp3;
delete buff;
delete file;
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
buff = new AudioFileSourceBuffer(file, Buff);
out = new AudioOutputI2SNoDAC();
out->SetGain(((float)Volume)/100.0);
Serial.printf_P(PSTR("Set Volume: %d\n"), Volume);
mp3 = new AudioGeneratorMP3();
mp3->begin(buff, out);
printRun=true;
printRun1=true;
}
if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop();
if (printRun ) {
printRun=false;
Serial.printf("Radio = play\n");
}
}
else { if (printRun1 ) {
printRun1=false;
Serial.printf("MP3 done\n");
}
if (millis()-lastms > time) {
lastms = millis();
next_rs= true;
restartURL = true;
}
}
}
else if (r_stop) {
r_stop=false;
Serial.printf("Radio = stop\n");
printRun=true;
}
1252
#include
<Arduino.h>
#include
"AudioFileSourceICYStream.h"
#include
"AudioFileSourceBuffer.h"
#include
"AudioGeneratorMP3.h"
#include
"AudioOutputI2SNoDAC.h"
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
*URL
= "";
const char
rs_str
[60];
char
restartURL
=true;
bool
printRun
=false;
bool
printRun1
=false;
bool
r_stop
= false;
bool
lastms
= 0;
static int
status_radio
517e1f77-84c4-47eb-981e-513050ece78b
11b3ac28-d0e1-4e61-9517-febaf9c4e202
295fb095-2437-4d0c-ac26-fd2871558b63
ESP8266 WiFi Pадио_izm1
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
radiostation - URL радиостанции
newUrl - запуск установленной радиостанции, (импульсный сигнал)
Buff - буфер 2048, лучше 4096 или до 8196, выбирать в зависимости от памяти ESP8266.
Volume - уровень сигнала с выхода RX
Параметры:
time - время через которое появится импульс на выходе next_rs при сбое или включении неработающей р/станции.
Некоторые радиостанции (проверены, можно скопировать отсюда):
http://icecast.russkoeradio.cdnvideo.ru:8000/rr_m.mp3
http://jazz.streamr.ru/jazz-64.mp3
http://stream0.radiostyle.ru:8000/rapicom
http://nashe1.hostingradio.ru/rock-256
http://91.190.117.131:8000/live
http://online.radiorecord.ru:8102/sd90_128
http://icecast.vgtrk.cdnvideo.ru/kulturafm_mp3_128kbps
Цифры в конце URL (128kbps, 256) битрейт , ставьте не более 128, лучше еще меньше ,
чтобы не заикался. И уровень WiFi сети должна быть хорошей.
937
if (En)
{r_stop=true;
if (newUrl || restartURL)
{ restartURL=false;
next_rs=false;
delete mp3;
delete buff;
delete file;
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
buff = new AudioFileSourceBuffer(file, Buff);
out = new AudioOutputI2SNoDAC();
out->SetGain(((float)Volume)/100.0);
Serial.printf_P(PSTR("Set Volume: %d\n"), Volume);
mp3 = new AudioGeneratorMP3();
mp3->begin(buff, out);
printRun=true;
printRun1=true;
}
if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop();
if (printRun ) {
printRun=false;
Serial.printf("Radio = play\n");
status_radio = 1;
}
}
else { if (printRun1 ) {
printRun1=false;
Serial.printf("MP3 done\n");
}
if (millis()-lastms > time) {
lastms = millis();
next_rs= true;
restartURL = true;
}
}
}
else if (r_stop) {
r_stop=false;
Serial.printf("Radio = stop\n");
status_radio = 0;
printRun=true;
}
1265
6540ef35-f930-44e0-a72f-5a1ea09bb305
ac42743e-184c-42a3-85c8-89493bee1b12
17c1c10f-7b8b-4021-9cbc-647e5f4c8a22
if (En)
{r_stop=true;
if (newUrl || restartURL)
{ restartURL=false;
next_rs=false;
out = NULL;
singl_name = "";
if (mp3)
{
mp3->stop();
delete mp3;
mp3 = NULL;
}
if (buff)
{
buff->close();
delete buff;
buff = NULL;
}
if (file)
{
file->close();
delete file;
file = NULL;
}
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
buff = new AudioFileSourceBuffer(file, Buff);
out = new AudioOutputI2SNoDAC();
out->SetGain(((float)Volume)/100.0);
Serial.printf_P(PSTR("Set Volume: %d\n"), Volume);
mp3 = new AudioGeneratorMP3();
mp3->begin(buff, out);
printRun=true;
printRun1=true;
}
if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop();
if (printRun ) {
printRun=false;
Serial.printf("Radio = play\n");
}
status_radio = true;
}
else { if (printRun1 ) {
printRun1=false;
Serial.printf("MP3 done\n");
}
if (millis()-lastms > time) {
lastms = millis();
next_rs= true;
restartURL = true;
}
}
}
else { status_radio = false;
if (r_stop) {
r_stop=false;
Serial.printf("Radio = stop\n");
printRun=true;
}
}
1431
#include
<Arduino.h>
#include
"AudioFileSourceICYStream.h"
#include
"AudioFileSourceBuffer.h"
#include
"AudioGeneratorMP3.h"
#include
"AudioOutputI2SNoDAC.h"
*mp3
;
AudioGeneratorMP3
*file
;
AudioFileSourceICYStream
*buff
;
AudioFileSourceBuffer
*out
;
AudioOutputI2SNoDAC
*URL
= "";
const char
rs_str
[60];
char
restartURL
=true;
bool
printRun
=false;
bool
printRun1
=false;
bool
r_stop
= false;
bool
lastms
= 0;
static int
const char *ptr = reinterpret_cast<const char *>(cbData);
(void) isUnicode; // Punt this ball for now
// Note that the type and string may be in PROGMEM, so copy them to RAM for printf
char s1[32], s2[64];
strncpy_P(s1, type, sizeof(s1));
s1[sizeof(s1)-1]=0;
strncpy_P(s2, string, sizeof(s2));
s2[sizeof(s2)-1]=0;
Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
Serial.flush();
if (String(s1)=="StreamTitle") {
singl_name = s2;
}
482
void
MDCallback
void
*cbData
const char
*type
bool
isUnicode
const char
*string
const char *ptr = reinterpret_cast<const char *>(cbData);
// Note that the string may be in PROGMEM, so copy it to RAM for printf
char s1[64];
strncpy_P(s1, string, sizeof(s1));
s1[sizeof(s1)-1]=0;
Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
Serial.flush();
void
StatusCallback
void
*cbData
int
code
const char
*string
14
830@370
850@370 corner: 930@410
830@370 corner: 950@410
855.5d@384.5d
830@390 corner: 850@410
970@400
990@400
950@400 corner: 950@400
930@400
950@400
930@390 corner: 950@410
830@400
850@400
784.0d@400 corner: 784.0d@500
in_text3
1170@500
1190@500
OLED_ESP8266rus_1.1
2ff2e813-dc20-432b-aef2-2f13215238bf
646b536a-3742-4250-9d64-8a168c736fd0
in_text
809551ac-2d79-44a5-9c46-36ed74a8fd2c
2e1fe56b-371e-48be-9bd4-3228830da448
3abce5fb-68ff-46e5-9528-73a796960779
OLED дисплей для ESP8266RUS_1.1
Шрифты:
Кириллица:
ArialRus_Plain_10
ArialRus_Plain_14
ArialRus_Plain_16
ArialRus_Plain_24
ArialRus_Italic_10
ArialRus_Italic_16
ArialRus_Italic_24
Текст User_text1 и User_text2 появляется при запуске ЕСП.
209
text_alignment
TEXT_ALIGN_CENTER
3c538900-e863-4da3-910d-80b4eedeb3e5
50e2a4be-d1d8-48f4-92cd-9c2973a3d86f
5
D1 (или если Gpio5 = 5)
User_font
ArialRus_Plain_24
9132cd45-67f7-41c2-a894-27535365376e
3e906080-5381-4fb7-b171-a7272f487143
User_text1
Текст1
User_text2
Текст2
353f109f-de0b-45d1-bf8b-ff3a241d46e2
a8c7431a-1e13-40b4-aa3b-b6bae0cce6c1
text_alignment1
TEXT_ALIGN_CENTER
7b708500-83ed-40e9-ad19-88eeb09e1e3f
24915f1e-8fac-4f56-9a32-3da5a2b7918a
ArialRus_Plain_16
display.getWidth()/2
15
text_alignment2
TEXT_ALIGN_CENTER
TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT
ea331abd-7d00-479d-82b8-a18a77f386f8
3ca3cf29-c4ea-4d12-acaa-d658de390232
ArialRus_Plain_16
max_width
128
60029a15-25f5-480a-82f0-98d05e6a8baf
409a6c04-a196-4dad-8879-5ce875b47bd5
display.getWidth()/2
40
text_font
ArialRus_Italic_14
733ab3a8-087e-4a54-a257-c456f21a2dfa
04026be1-b4b0-480d-ac9f-be0f8d12ef5c
if (On_disp) {display.clear();
display.setTextAlignment(text_alignment);
display.setFont(text_font);
display.drawString(x, y, utf8rus(in_text));
display.setTextAlignment(text_alignment1);
display.setFont(text_font1);
display.drawString(x1, y1, utf8rus(in_text1));
display.setTextAlignment(text_alignment2);
display.setFont(text_font2);
display.drawStringMaxWidth(x2, y2, max_width, utf8rus(in_text2));
display.display();
}
473
display.init();
display.flipScreenVertically();
display.setContrast(255);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(User_font);
display.drawString(display.getWidth()/2, 15, utf8rus(User_text1));
display.drawString(display.getWidth()/2, 40, utf8rus(User_text2));
display.display();
delay (1000);
313
#include
<Wire.h>
не нужный дисплей комментировать:
#include "SH1106.h"
SH1106 display(adr_disp, pin_SDA, pin_SCK);
#include
"SSD1306.h"
display
(adr_disp, pin_SDA, pin_SCK);
SSD1306Wire
/* Recode russian fonts from UTF-8 to Windows-1251 */
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
673
String
utf8rus
String
source
x
4f34f82d-d3cd-4185-9797-6b27df596fd4
645f3185-16d0-4e7c-8b3e-9dfada951d65
y
b18b1220-7b26-4b92-b554-27a1046aa964
c692aac5-fcf3-43c2-899a-50cd796ed01d
6c84d451-3f63-40e4-a7e2-45b09f0e2d4c
5cb35c06-f180-43e0-b35a-59cd0fceba25
Применять соместно с главным блоком и блоком OLED display. Отдельно не работает.
Шрифты:
Кириллица:
ArialRus_Plain_10
ArialRus_Plain_14
ArialRus_Plain_16
ArialRus_Plain_24
ArialRus_Italic_10
ArialRus_Italic_16
ArialRus_Italic_24
DialogRus_Italic_10,
ArialRus_Italic_14,
ArialRus_Italic_26
text_alignment - положение текста на экране по горизонтали:
TEXT_ALIGN_LEFT,
TEXT_ALIGN_CENTER,
TEXT_ALIGN_RIGHT
404
ArialRus_Italic_16
ESP8266
RADIO
TEXT_ALIGN_RIGHT
ArialRus_Italic_16
ArialRus_Italic_16
0
ArialRus_Italic_16
text_alignment3
TEXT_ALIGN_CENTER
f457f789-1b3e-4351-ae27-f3d08dc1c2fd
b6c717fb-c59e-4173-bb3c-b597db5bfbd4
text_font3
ArialRus_Italic_16
967722f4-ab09-478a-a1b6-02bc08db6a31
dda5b1d3-a4ff-403c-b64d-58d8adfb111f
x3
64
4d582771-172e-4022-b0c6-8ed6ed577ffe
ec422111-61c0-4c0f-a6d4-191b5aa2808e
y3
dc9e9c3c-5d3b-4104-b41f-f1d17cb0eff8
d03938e3-6ec4-49e0-8fc6-711f0e1249d2
if (On_disp) {display.clear();
display.setTextAlignment(text_alignment);
display.setFont(text_font);
display.drawString(x, y, utf8rus(in_text));
display.setTextAlignment(text_alignment1);
display.setFont(text_font1);
display.drawString(x1, y1, utf8rus(in_text1));
display.setTextAlignment(text_alignment2);
display.setFont(text_font2);
display.drawString(x2, y2, utf8rus(in_text2));
display.setTextAlignment(text_alignment3);
display.setFont(text_font3);
display.drawString(x3, y3, utf8rus(in_text3));
display.display();
}
586
in_text4
1170@520
1190@520
OLED_ESP8266rus_1.2
in_text4
f536cda5-7c39-4855-a446-50b5406e1df1
20b2560b-b9e0-457c-a533-54271f9972ce
8140a8e9-a47d-47c4-a7db-5de8bc3494ea
OLED дисплей для ESP8266RUS_1.2
Шрифты:
Кириллица:
ArialRus_Plain_10
ArialRus_Plain_14
ArialRus_Plain_16
ArialRus_Plain_24
ArialRus_Italic_10
ArialRus_Italic_16
ArialRus_Italic_24
DialogRus_Italic_10,
ArialRus_Italic_14,
ArialRus_Italic_26
text_alignment - положение текста на экране по горизонтали:
TEXT_ALIGN_LEFT,
TEXT_ALIGN_CENTER,
TEXT_ALIGN_RIGHT
323
0
30
64
45
text_alignment4
TEXT_ALIGN_CENTER
ab399ce8-ca99-469e-bdcf-adb22aab5b03
05a1e8b8-27d5-43f6-b511-d69fb5c27ec0
text_font4
ArialRus_Plain_10
8a5c1f8e-4ab5-47ad-b85e-fc05c6c48647
45e6bf98-2263-4545-a1b6-3ea99bfc2d9f
x4
0
f0e109c0-ce1a-4249-89eb-570fcade74ff
094eeb55-0845-4138-9839-2369c51f0c7e
y4
50
55
94a54520-43c6-4eec-aef3-376a4271407b
7a084e7d-1fbc-4d1e-823b-97ec9b959026
if (On_disp) {display.clear();
display.setTextAlignment(text_alignment);
display.setFont(text_font);
display.drawString(x, y, utf8rus(in_text));
display.setTextAlignment(text_alignment1);
display.setFont(text_font1);
display.drawString(x1, y1, utf8rus(in_text1));
display.setTextAlignment(text_alignment2);
display.setFont(text_font2);
display.drawString(x2, y2, utf8rus(in_text2));
display.setTextAlignment(text_alignment3);
display.setFont(text_font3);
display.drawString(x3, y3, utf8rus(in_text3));
display.setTextAlignment(text_alignment4);
display.setFont(text_font4);
display.drawString(x4, y4, utf8rus(in_text4));
display.display();
}
718
1170@540
1190@540
1170@560
1190@560
1155.0d@563.5d
1170@580
1190@580
1156.0d@583.5d
38d73d9f-9bbe-4936-8c00-cfaba347eaeb
ESP8266
WiFi RADIO
ArialRus_Plain_10
ArialRus_Plain_10
ArialRus_Plain_10
10
ArialRus_Plain_10
30
64
40
128.0d
1190@460
815.0d@70 corner: 815.0d@460
820@70
840@70
940@70
920@70
940@70 corner: 940@360
970@360
990@360
970@350 corner: 990@370
970@370 corner: 990@390
970@390 corner: 990@410
970@410 corner: 990@430
400@360
420@360 corner: 500@400
400@360 corner: 520@400
425.5d@374.5d
400@390
420@390
520@390
500@390
620@360
640@360
520@360 corner: 520@440
970@440
990@440
970@430 corner: 990@450
1030@430 corner: 1050@450
970@420
990@420
770@420 corner: 770@480
750@480
770@480
750@470 corner: 770@490
650@480
670@480
360@480 corner: 360@520
Q
340@480
360@480
dec
I
300@480
260@340 corner: 260@480
Index
270@340
290@340
390@340
Radio
http://nashe1.hostingradio.ru/nashe-128.mp3
http://icecast.vgtrk.cdnvideo.ru/kulturafm_mp3_128kbps
http://jazz.streamr.ru/jazz-64.mp3
http://stream0.radiostyle.ru:8000/rapicom
http://nashe1.hostingradio.ru/rock-256
http://ep128.hostingradio.ru:8030/ep128
Q
370@340
21
39
430@270
450@270 corner: 530@330
430@270 corner: 550@330
456.5d@283.5d
send
430@300
444@300
430@320
9600
GPIO-3
D9
187700865
GPIO-1
D10
13382813
change
D
450@320
390@320 corner: 390@540
620@340
640@340
620@330 corner: 640@350
620@350 corner: 640@370
4096
620@380
640@380
594.0d@383.5d
620@370 corner: 640@390
620@400
640@400
606.0d@403.5d
620@390 corner: 640@410
58.0d
764.0d@360
784.0d@360
764.0d@350 corner: 784.0d@370
35.0d
764.0d@380
784.0d@380
764.0d@370 corner: 784.0d@390
764.0d@390 corner: 784.0d@410
ESP8266_WiFi_RADIO
907a7a62-91e9-4fe4-a97c-982281e88732
ESP8266 WiFi РАДИО
Проигрывание радиостанций с помощью только ESP8266 по wi fi, без дополнительных плат!
Выход звука на пинах ESP8266 GND и TX. Можно напрямую подключить наушники. Звук только моно.
Входы:
En - вкл и выкл блока;
radiostation - URL радиостанции;
newUrl - запуск установленной радиостанции, (импульсный сигнал);
Buff - буфер от 2048, я ставил 4096 , выбирать в зависимости от памяти ESP8266;
Volume - уровень сигнала с выхода RX.
Выходы:
status_radio - состояние радио, если включено true, иначе - false;
next_rs - появится импульс при сбое или включении неработающей р/станции.
singl_name - вывод имени исполнителя и трека.
Параметры:
time - время через которое появится импульс на выходе next_rs при сбое или включении неработающей р/станции.
Некоторые радиостанции (проверены, можно скопировать отсюда):
http://icecast.russkoeradio.cdnvideo.ru:8000/rr_m.mp3
http://jazz.streamr.ru/jazz-64.mp3
http://stream0.radiostyle.ru:8000/rapicom
http://nashe1.hostingradio.ru/rock-256
http://91.190.117.131:8000/live
http://online.radiorecord.ru:8102/sd90_128
http://icecast.vgtrk.cdnvideo.ru/kulturafm_mp3_128kbps
Цифры в конце URL (128kbps, 256) битрейт , ставьте URL не более 128, лучше еще меньше ,
если заикается часто. И уровень WiFi сети должна быть хорошей. Проверял URL с битрейт 320,
у меня радио работало хорошо!
aidar_i
03/2019
1339
if (En)
{r_stop=true;
if (newUrl || restartURL)
{ restartURL=false;
next_rs=false;
out = NULL;
singl_name = "";
if (mp3)
{
mp3->stop();
delete mp3;
mp3 = NULL;
}
if (buff)
{
buff->close();
delete buff;
buff = NULL;
}
if (file)
{
file->close();
delete file;
file = NULL;
}
radiostation.toCharArray(rs_str, radiostation.length()+1);
URL=rs_str;
file = new AudioFileSourceICYStream(URL);
file->RegisterMetadataCB(MDCallback, (void*)"ICY");
buff = new AudioFileSourceBuffer(file, Buff);
buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
out = new AudioOutputI2SNoDAC();
out->SetGain(((float)Volume)/100.0);
Serial.printf_P(PSTR("Set Volume: %d\n"), Volume);
mp3 = new AudioGeneratorMP3();
mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
mp3->begin(buff, out);
printRun=true;
printRun1=true;
}
if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop();
if (printRun ) {
printRun=false;
Serial.printf("Radio = play\n");
}
status_radio = true;
}
else { if (printRun1 ) {
printRun1=false;
Serial.printf("MP3 done\n");
}
if (millis()-lastms > time) {
lastms = millis();
next_rs= true;
restartURL = true;
}
}
}
else { status_radio = false;
if (r_stop) {
r_stop=false;
Serial.printf("Radio = stop\n");
printRun=true;
}
}
1602
system_update_cpu_freq(SYS_CPU_160MHZ);
Serial.begin(115200);
const char *ptr = reinterpret_cast<const char *>(cbData);
(void) isUnicode; // Punt this ball for now
// Note that the type and string may be in PROGMEM, so copy them to RAM for printf
char s1[300], s2[300];
strncpy_P(s1, type, sizeof(s1));
s1[sizeof(s1)-1]=0;
strncpy_P(s2, string, sizeof(s2));
s2[sizeof(s2)-1]=0;
Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
Serial.flush();
if (String(s1)=="StreamTitle") {
singl_name = s2;
}
484
124.0d
671.0d
arduinoIDE
202663010
ESP8266 NodeMcu v3
202922315