Lista de Materiales:
1) NodeMCU (ESP8266)
1) Micrófono electret
1) Transistor BC377
2) Resistencias de 10K
1) Resistencia de 680K
1) Resistencia de 330
1) Preset de 100K
1) Led
2) Capacitores de 0,1uf (104)
1) Capacitor electrolítico de 470uF 16V
microfonoNivel:
void setup() { Serial.begin(115200); Serial.println(); } void loop() { int analog = analogRead(17); Serial.print("0, 512, 1024, "); Serial.println(analog); }
microfonoUDP:
#include <ESP8266WiFi.h> #include <WiFiUdp.h> const char* ssid = "______"; const char* password = "______"; 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,1,180); IPAddress Gateway(192,168,1,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.1.101", 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 } Udp.endPacket(); delay(5); }
reproductor.py:
import pyaudio import socket UDP_IP = "192.168.1.101" UDP_PORT = 1234 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((UDP_IP, UDP_PORT)) p = pyaudio.PyAudio() stream = p.open(format=32, channels=1, rate=11111, 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()
http://people.csail.mit.edu/hubert/pyaudio/
Hola, muy bueno, se me ocurre para hacer un sistema de audio remoto, aunque con otro mcu, hay alguna info de como recibir este audio desde otro micro y asi usarlo en un amplificador o un retorno. Que delay tendra?, el micro soportara doble emisión para hacer audio estereo. Saludos
ResponderEliminarLa idea de este tutorial es hacer algo muy básico y educativo, olvídate de mucha mejor calidad de sonido y aún menos de estéreo. Si vos estás pensando en algo que tenga cierta calidad de sonido, te recomiendo que investigues sobre I2S. Si en algún momento compro un módulo I2S, voy a hacer un tutorial al respeto.
EliminarEstoy intentando replicarlo con I2S pero tengo problemas, a ver si te animas! un saludo y gran trabajo!!!
EliminarHermano muy chevre la nota. Felicitaciones y sigue adelante.
ResponderEliminarMuchas gracias José.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhttp://people.csail.mit.edu/hubert/pyaudio/
Eliminarcan u make a english video please
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarExcelente. Muy buen aporte. Gracias
ResponderEliminarHello. Thank you for the topic. I have one problem.. The stream goes with lot of cuts, the signal is not stable and the pitch is a bit high as well. Can you tell what may be the problem? Thank you
ResponderEliminarmaybe... you are streaming with wifi.. on that case, you will have a lot of inestability problems.. and it is because the wifi timer is the same that the analogRead!
EliminarI explain that is the video. It is a very simple and didactic example, from the practical point of view it has several problems. Greetings.
ResponderEliminarHello. Is it possible to use a cloud server (digitalocean) to receive the audio stream? If I just change this UDP_IP = "192.168.1.101" to my server's IP would it work? Thank you.
ResponderEliminarHello. Is it possible to use a cloud server (digitalocean) to receive the audio stream? If I just change this UDP_IP = "192.168.1.101" to my server's IP would it work? Thank you.
ResponderEliminarTengo la misma duda, se puede enviar el audio a través de internet usando un gateway en la nube?
EliminarLa respuesta corta es, se puede. Pero siendo UDP o bien estás escuchando en ese puerto y haces algo con esa información o bien lo almacenas en un fichero wav, que también es factible.
EliminarGracias, lo he probado conectando directamente el microfono electrec, solo tube que modificar el rango y aumentar la ganancia y funciona. Gracias por el proyecto me parecio super practico y educativo.
ResponderEliminarme podria dar una mano ya que no eh logrado realizar la transmision
EliminarHey, gran explicaci+on y excelente video, me preguntaba si es posible hacerlo con un ESP 32?
ResponderEliminarpodria ayudarme con este proyecto, ya que no eh logrado transmitir audio
ResponderEliminarPara el desarrollo del proyecto se puede utilizar un ESP32?
ResponderEliminar