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.
Com 8266 eu não sei dizer, mas com o 32 dá.
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é ?
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.