ESP8266 Transmitir audio?


#1

Boa tarde, estou com duas placas NodeMCU que vem integrado o ESP8266, existe possibilidade de enviar um som tipo de um celular ou microfone em tempo real e a outra receber esse som em tempo real ? não consigo achar nada nesse aspecto, desde já agradeço a ajuda.


#2

Com 8266 eu não sei dizer, mas com o 32 dá.


#3

Que legal man, vou procurar a respeito, desculpe minha ignorância, mas ao invés de um raspberry posso usar um arduino normal mesmo né ?


#4

Para recepção? Não tenho certeza que seja possível.
Para esp8266, consegui um código, ainda vou fazer artigo. Para o computador:
import pyaudio
import socket

UDP_IP = “192.168.6.24”
UDP_PORT = 1234

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))

p = pyaudio.PyAudio()

rate= 8000, format = 8 ?

#stream = p.open(format=32, channels=1, rate=11111, output=True)
#stream = p.open(format=32, channels=1, rate=8000, output=True)
stream = p.open(format=32, channels=1, rate=8000, output=True)

try:
while True:
data, addr = sock.recvfrom(1024) # buffer de 1024 bytes
stream.write(data)

except KeyboardInterrupt: #precionar Crtl + C para salir
print(“Cerrando…”)
stream.stop_stream()
stream.close()
p.terminate()

E para o ESP8266:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char* ssid = “RedeTV”;
const char* password = “senha rede”;
int contconexion = 0;

WiFiUDP Udp;

void setup()
{
Serial.begin(115200);
Serial.println();

pinMode(5, OUTPUT); //D1 Led de estado
digitalWrite(15, LOW);

WiFi.mode(WIFI_STA); //para que no inicie el SoftAP en el modo normal
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED and contconexion <50) { //Cuenta hasta 50 si no se puede conectar lo cancela
++contconexion;
delay(250);
Serial.print(".");
digitalWrite(5, HIGH);
delay(250);
digitalWrite(5, LOW);
}
if (contconexion <50) {
//para usar con ip fija
IPAddress Ip(192,168,6,34);
IPAddress Gateway(192,168,6,1);
IPAddress Subnet(255,255,255,0);
WiFi.config(Ip, Gateway, Subnet);

  Serial.println("");
  Serial.println("WiFi conectado");
  Serial.println(WiFi.localIP());
  digitalWrite(5, HIGH);  

}
else {
Serial.println("");
Serial.println(“Error de conexion”);
digitalWrite(15, LOW);
}
}

void loop()
{
Udp.beginPacket(“192.168.6.24”, 1234);

for(int i=0; i<1024;i++){
int old=micros();

float analog = analogRead(17);

analog = ((analog / 1) - 385);
if (analog > 255){
  analog = 255;
}
else if (analog < 0){
  analog = 0;
}

Udp.write(int(analog));
//while(micros()-old<87); // 90uSec = 1Sec/11111Hz - 3uSec para los otros procesos
while(micros()-old<122); ///ou melhor 121? ou 122 - 122 foi o melhor

}
Udp.endPacket();
delay(5);
}

Preciso fazer mais testes, o som é bem ruim, isso porque já mexi pra melhorar.