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/
