def ConnectSDcardFile(): global spi, sdfile, sd spi = SPI(sck=Pin(5), mosi=Pin(22), miso=Pin(27)) try: sd = sdcard.SDCard(spi, Pin(23)) os.mount(sd, '/sd') except OSError as e: return ("SD card", str(e.args[0])) if not sum((f[0]=="LOG") for f in os.ilistdir("sd")): os.mkdir("sd/LOG") fnum = 1+max((int(f[0][:3]) for f in os.ilistdir("sd/LOG") if f[3]>10), default=0) fname = "sd/LOG/{:03d}.TXT".format(fnum) print("Opening file", fname) sdfile = open(fname, "w") sdfile.write("Logfile: {}\n".format(fname)) sdfile.write("Device number: 3\n") sdfile.write("Rt[ms]d\"[isodate]\"e[latdE]n[latdN]f[lngdE]o[lngdN] GPS cooeffs\n") sdfile.write("Qt[ms]u[ms midnight]y[lat600000]x[lng600000]a[alt] GPS\n") sdfile.write("Vt[ms]v[kph100]d[deg100] GPS velocity\n") sdfile.write("Ft[ms]p[milibars] bluefly pressure\n") sdfile.write("Gt[ms]r[rawhumid]a[rawtemp] si7021Humidity meter\n") sdfile.write("Nt[ms]r[rawadc]s[resistance] nickel wire sensor\n") sdfile.write("Zt[ms]xyz[linacc]abc[gravacc]wxyz[quat]s[calibstat] orient\n"); sdfile.write("Yt[ms]s\"calibconsts\" orient calib\n"); sdfile.write("\n") sdfile.flush() return (["SDfile", fname[:6], fname[6:]])
def esp8266_mount(): from machine import Pin, SPI import sdcard import uos spi = SPI(-1, miso=Pin(7), mosi=Pin(8), sck=Pin(6)) sd = sdcard.SDCard(spi, Pin(11)) return uos.VfsFat(sd, "")
def __init__(self, spi, reset, dreq, xdcs, xcs, sdcs=None, mp=None, cancb=lambda: False): self._reset = reset self._dreq = dreq # Data request self._xdcs = xdcs # Data CS self._xcs = xcs # Register CS self._mp = mp self._spi = spi self._cbuf = bytearray(4) # Command buffer self._cancb = cancb # Cancellation callback self._slow_spi = True # Start on low baudrate self._overrun = 0 # Recording self.reset() if ((sdcs is not None) and (mp is not None)): import sdcard import os sd = sdcard.SDCard(spi, sdcs) vfs = os.VfsFat(sd) os.mount(vfs, mp) self._spi.init(baudrate=_DATA_BAUDRATE)
def mountsd(): try: spisd = SPI(-1, sck=Pin(14), mosi=Pin(13), miso=Pin(12)) sd = sdcard.SDCard(spisd, machine.Pin(15)) os.mount(sd, '/sd') return 1 except: return 0
def sdtest2(): spi = machine.SPI(1) spi.init() # Ensure right baudrate sd = sdcard.SDCard(spi, machine.Pin(15)) # Compatible with PCB # vfs = os.VfsLfs2(sd) vfs = os.VfsFat(sd) os.mount(vfs, "/fc") print("Filesystem check") print(os.listdir("/fc")) line = "abcdefghijklmnopqrstuvwxyz\n" lines = line * 200 # 5400 chars short = "1234567890\n" fn = "/fc/rats.txt" print() print("Multiple block read/write") with open(fn, "w") as f: n = f.write(lines) print(n, "bytes written") n = f.write(short) print(n, "bytes written") n = f.write(lines) print(n, "bytes written") with open(fn, "r") as f: result1 = f.read() print(len(result1), "bytes read") fn = "/fc/rats1.txt" print() print("Single block read/write") with open(fn, "w") as f: n = f.write(short) # one block print(n, "bytes written") with open(fn, "r") as f: result2 = f.read() print(len(result2), "bytes read") os.umount("/fc") print() print("Verifying data read back") success = True if result1 == "".join((lines, short, lines)): print("Large file Pass") else: print("Large file Fail") success = False if result2 == short: print("Small file Pass") else: print("Small file Fail") success = False print() print("Tests", "passed" if success else "failed")
def init_SD(): spi = SPI(2, baudrate = 10000000, polarity = 0, phase = 0, bits = 8, firstbit = SPI.MSB, sck = Pin(18, Pin.OUT, Pin.PULL_DOWN), mosi = Pin(23, Pin.OUT, Pin.PULL_UP), miso = Pin(19, Pin.IN, Pin.PULL_UP)) spi.init() # Ensure right baudrate sd = sdcard.SDCard(spi, Pin(22)) # Compatible with PCB return sd
def init_sd_card(): # First we would like to bount the SD card try: spibus = SPI(1, sck=Pin(18), mosi=Pin(23), miso=Pin(19)) sd = sdcard.SDCard(spibus, Pin(4)) # <- chipselect 4 on WEMOS D32 Pro os.mount(sd, SD_ROOT) except: failure()
def get_predict(filename,th,ts,tp): ts=ts+th tp=tp+ts #SD card setup #MOSI(IO23) MISO(19) SCK(18) spisd=SPI(-1,sck=Pin(18),mosi=Pin(23),miso=Pin(19)) #CS(5) sd=sdcard.SDCard(spisd,Pin(5)) uos.mount(sd,'/sd') #WiFi setup WIFI_SSID = 'OPPOA5s' WIFI_PASSWORD = '******' ap_if = network.WLAN(network.AP_IF) wifi = network.WLAN(network.STA_IF) ap_if.active(False) # connect the device to the WiFi network wifi.active(True) wifi.connect(WIFI_SSID, WIFI_PASSWORD) time.sleep(5) #Read data from csv file Data=[] label=[] no_Rows=0 filename="/sd/{}".format(filename) with open(filename,'r') as file: for line in file: if no_Rows <= ts & no_Rows > 0: line=line.rstrip('\n') line=line.rstrip('\r') Data.append(line.split(',')) no_Rows+=1 elif no_Rows == 0: line=line.rstrip('\n') line=line.rstrip('\r') label.append(line.split(',')) no_Rows+=1 else: no_Rows+=1 column = label[0] #Convert data into json format js = {"columns":column, "data":Data} jsd = json.dumps(js) dfj = json.loads(jsd) #url to cloud system url = 'https://test-torc.herokuapp.com/torc-extract/?th={}'.format(ts) result = urequests.post(url,data=jsd) print(result) print(result.text) #Unmount SD card and deactivate WiFi uos.umount('/sd') wifi.active(False) ap_if.active(True) return result.text[-3]
def sdtest(): spi = machine.SPI(1) spi.init() # Ensure right baudrate sd = sdcard.SDCard(spi, machine.Pin.board.X21) # Compatible with PCB vfs = os.VfsFat(sd) os.mount(vfs, '/fc') print('Filesystem check') print(os.listdir('/fc')) line = 'abcdefghijklmnopqrstuvwxyz\n' lines = line * 200 # 5400 chars short = '1234567890\n' fn = '/fc/rats.txt' print() print('Multiple block read/write') with open(fn,'w') as f: n = f.write(lines) print(n, 'bytes written') n = f.write(short) print(n, 'bytes written') n = f.write(lines) print(n, 'bytes written') with open(fn,'r') as f: result1 = f.read() print(len(result1), 'bytes read') fn = '/fc/rats1.txt' print() print('Single block read/write') with open(fn,'w') as f: n = f.write(short) # one block print(n, 'bytes written') with open(fn,'r') as f: result2 = f.read() print(len(result2), 'bytes read') os.umount('/fc') print() print('Verifying data read back') success = True if result1 == ''.join((lines, short, lines)): print('Large file Pass') else: print('Large file Fail') success = False if result2 == short: print('Small file Pass') else: print('Small file Fail') success = False print() print('Tests', 'passed' if success else 'failed')
def mount_sd(): logger.info("mounting sd...") try: sd = sdcard.SDCard(machine.SPI(1), machine.Pin(15)) os.mount(sd, "/sd") except Exception as e: logger.exc(e, "sd could not be mounted.") failed_mounts_count = increment_counter("failed_mounts") if failed_mounts_count == 1: print_error_msg("SD-Karte konnte nicht gelesen werden! Sag besser mal Fabian bescheid!") else: reset_counter("failed_mounts")
def sdtest(): sd = sdcard.SDCard(pyb.SPI(1), pyb.Pin.board.X21) # Compatible with PCB pyb.mount(sd, '/fc') print('Filesystem check') print(os.listdir('/fc')) line = 'abcdefghijklmnopqrstuvwxyz\n' lines = line * 200 # 5400 chars short = '1234567890\n' fn = '/fc/rats.txt' print() print('Multiple block read/write') with open(fn, 'w') as f: n = f.write(lines) print(n, 'bytes written') n = f.write(short) print(n, 'bytes written') n = f.write(lines) print(n, 'bytes written') with open(fn, 'r') as f: result1 = f.read() print(len(result1), 'bytes read') fn = '/fc/rats1.txt' print() print('Single block read/write') with open(fn, 'w') as f: n = f.write(short) # one block print(n, 'bytes written') with open(fn, 'r') as f: result2 = f.read() print(len(result2), 'bytes read') pyb.mount(None, '/fc') print() print('Verifying data read back') success = True if result1 == ''.join((lines, short, lines)): print('Large file Pass') else: print('Large file Fail') success = False if result2 == short: print('Small file Pass') else: print('Small file Fail') success = False print()
def test_format_sd(): sd_mnt_point = "/sd" spi = machine.SPI(1, sck=machine.Pin(10), mosi=machine.Pin(11), miso=machine.Pin(12), baudrate=10000) cs = machine.Pin(15) sd = sdcard.SDCard(spi, cs) os.VfsFat.mkfs(sd) sd_vfs_fat = os.VfsFat(sd) os.mount(sd_vfs_fat, sd_mnt_point) print("SD mounted") os.umount(sd_mnt_point) print("SD unmounted")
def sdcard(self): if not self._sdcard: _logger.debug("Initializing SD card") import pycom_util import sdcard self._spi = pycom_util.SpiWrapper() self._spi.init(SPI.MASTER) try: self._sdcard = sdcard.SDCard(self._spi, machine.Pin(self._sd_cs_pin_name)) except OSError as e: if "no sd card" in str(e).lower(): raise NoSdCardError(e) else: raise return self._sdcard
def __init__(self, spi, reset, dreq, xdcs, xcs, sdcs=None, mp=None): self._reset = reset self._dreq = dreq # Data request self._xdcs = xdcs # Data CS self._xcs = xcs # Register CS self._spi = spi self._cbuf = bytearray(4) # Command buffer self.reset() if ((sdcs is not None) and (mp is not None)): import sdcard import os sd = sdcard.SDCard(spi, sdcs) vfs = os.VfsFat(sd) os.mount(vfs, mp) self._cancnt = 0 # If >0 cancellation in progress self._playing = False self._spi.init(baudrate=_DATA_BAUDRATE) self._swriter = asyncio.StreamWriter(self, {})
def Sampling(th,ts,tp): thi = th tsi = ts+th tpi = tp+ts spisd=SPI(-1,sck=Pin(18),mosi=Pin(23),miso=Pin(19)) sd=sdcard.SDCard(spisd,Pin(5)) uos.mount(sd,'/sd') filename = time.localtime() filename = "Sampling_{}-{}-{}_{}-{}-{}.csv".format(filename[3],filename[4],filename[5],filename[2],filename[1],filename[0]) f = open("/sd/{}".format(filename),"a") f.write("time(s),TGS 2600,TGS 2602,TGS 2611,TGS 2620,TGS 813,TGS 816,TGS 821,TGS 822,TGS 826,TGS 832,Temp,Humid\n") t = 0 ti = 0 data = Sensor_Read(th) while t<thi: print("Heating_t:{}".format(t)) S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12 = data[ti] f.write("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) print("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) ti+=1 t+=1 pump("Sampling") data = Sensor_Read(ts) ti=0 while t>=thi and t<tsi: print("Sampling_t:{}".format(t)) S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12 = data[ti] f.write("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) print("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) ti+=1 t+=1 pump("Purging") data = Sensor_Read(tp) ti=0 while t>=tsi and t<tpi: print("Purging_t:{}".format(t)) S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12 = data[ti] f.write("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) print("{},{},{},{},{},{},{},{},{},{},{},{},{}\n".format(t,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12)) ti+=1 t+=1 f.close() uos.umount('/sd') return filename
def fs_use_sd(mnt_root_point="/sd"): # spi = machine.SPI(1) global sd_vfs_fat global sd_mnt_point if sd_vfs_fat != None: print("SD already used") return sd_mnt_point = mnt_root_point spi = machine.SPI(1, sck=machine.Pin(10), mosi=machine.Pin(11), miso=machine.Pin(12)) # spi = machine.SPI(1) cs = machine.Pin(15) sd = sdcard.SDCard(spi, cs) sd_vfs_fat = os.VfsFat(sd) os.mount(sd_vfs_fat, sd_mnt_point) print("SD mounted at " + sd_mnt_point)
def sdtest1(): spi = machine.SPI(1, sck=machine.Pin(10), mosi=machine.Pin(11), miso=machine.Pin(12)) spi = machine.SPI(1) cs = machine.Pin(15) sd = sdcard.SDCard(spi, cs) vfs = os.VfsFat(sd) os.mount(vfs, '/sd') os.mkdir('/sd/sd2') os.chdir('/sd/sd2') with open("pico2.txt", "a") as file: for i in range(10): file.write(str(i)+"2. Hello, world!\r\n") os.chdir('/') os.umount("/sd")
def __init__(self, mode): self.displayMode = mode try: os.mount( sdcard.SDCard( machine.SPI( 1, baudrate=80000000, polarity=0, phase=0, bits=8, firstbit=0, sck=Pin(14), mosi=Pin(13), miso=Pin(12), ), machine.Pin(15), ), "/sd", ) except: pass
def toggle_led_sd(x, butpress=sd_detect, light=led, sd_spi=spi, sd_cs=cs, getinfo=pd_txtfiles): global irq_busy_sd, sd_out, sd if irq_busy_sd: return else: irq_busy_sd = True if butpress.value() == 1: # reverse op == 0 if sd_out is True: print('SD card detected') for i in range(4): led.value(not led.value()) time.sleep_ms(250) butpress.init(Pin.OUT) sd = sdcard.SDCard(sd_spi, sd_cs) time.sleep_ms(1000) os.mount(sd, '/sd') print(os.listdir('/')) # butpress.value(0) # reverse op == 1 butpress.init(Pin.IN) getinfo("/sd") sd_out = False # butpress.init(Pin.IN, Pin.PULL_UP) elif butpress.value() == 0: if sd_out is False: print('SD card removed') for i in range(4): led.value(not led.value()) time.sleep_ms(250) time.sleep_ms(1000) butpress.init(Pin.OUT) os.umount('/sd') time.sleep_ms(1000) sd_out = True irq_busy_sd = False
def main(): try: # Turn display power axp = axp202c.PMU(address=0x34) axp.enablePower(axp202c.AXP192_LDO2) # Set backlight voltage axp.setDC3Voltage(3000) spi = SPI(2, baudrate=20000000, sck=Pin(18), miso=Pin(38), mosi=Pin(23)) # initialize and mount the sdcard sd_device = sdcard.SDCard(spi, cs=Pin(4), baudrate=20000000) uos.mount(sd_device, '/sd') # initialize display tft = ili9342c.ILI9342C(spi, 320, 240, cs=Pin(5, Pin.OUT), dc=Pin(15, Pin.OUT), rotation=0, buffer_size=38400) tft.init() for i in range(1, 2387): frame = "/sd/160x120/{:04d}.jpg".format(i) tft.jpg(frame, 80, 60, ili9342c.FAST) finally: # shutdown spi if 'spi' in locals(): spi.deinit()
raise utime.sleep(DEFAULT_SLEEP) ###プログラムはここから動くよ #SDカードやディスプレイが接続されるシリアルバスの初期化 spi = SPI(1, baudrate=26000000, polarity=1, phase=1, sck=Pin(18), mosi=Pin(17), miso=Pin(19)) #ディスプレイの初期化 display = ssd1331.SSD1331(spi, dc=Pin(12), cs=Pin(15), rst=Pin(16)) #SDカードを準備 try: sd = sdcard.SDCard(spi, Pin(5)) uos.mount(sd, SD_MOUNT_PATH) uos.chdir(SD_MOUNT_PATH) except: #SDカードの準備に失敗したら、エラー画面出すよ send_image(SD_ERROR) raise #画像定義ファイルステータスが try: uos.stat(CONFIG_FILE) #所得できたら定義ファイルから画像を表示するメソッドを実行 read_from_config_file() except: #取得できなかったらSDカードに存在する画像を表示するメソッドを実行 read_from_file_list()
# boot.py -- run on boot-up # can run arbitrary Python, but best to keep it minimal import sys import machine import pyb import os import time import sdcard from machine import I2C, UART, SPI, Pin pyb.country('ES') # ISO 3166-1 Alpha-2 code, eg US, GB, DE, AU #pyb.main('main.py') # main script to run after this one #pyb.usb_mode('VCP+MSC') # act as a serial and a storage device #pyb.usb_mode('VCP+HID') # act as a serial device and a mouse #Acces facil als Pins pin = Pin.board #Montar la SD sd = sdcard.SDCard(SPI(1), pin.PB0) try: os.mount(sd, '/sd') #donar acces a l'import per la sd sys.path.append('/sd') except: print("Hi ha hagut un problema muntant la SD, verificar") ### Per a veure el directori fer: ### os.listdir('/sd')
print('SD card removed') for i in range(4): led.value(not led.value()) time.sleep_ms(250) time.sleep_ms(1000) butpress.init(Pin.OUT) os.umount('/sd') time.sleep_ms(1000) sd_out = True irq_busy_sd = False sd_detect.irq(trigger=3, handler=toggle_led_sd) if sd_detect.value() == 1: print('SD card detected') for i in range(4): led.value(not led.value()) time.sleep_ms(250) sd_detect.init(Pin.OUT) sd = sdcard.SDCard(spi, cs) time.sleep_ms(1000) os.mount(sd, '/sd') print(os.listdir('/')) # butpress.value(0) # reverse op == 1 sd_detect.init(Pin.IN) pd_txtfiles("/sd") sd_out = False else: print('SD card not detected')
rst = Pin(16, Pin.OUT) rst.value(1) scl = Pin(15, Pin.OUT, Pin.PULL_UP) sda = Pin(4, Pin.OUT, Pin.PULL_UP) #i2c = I2C(scl=scl, sda=sda, freq=450000) i2c = I2C(scl=scl, sda=sda, freq=400000) oled = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3c) oled.fill(0) oled.text('Iniciando', 0, 0) oled.show() # inicializacion modulo SD Pin(18, Pin.OUT, value=1) #para desactivar LoRa spi = SPI(sck=Pin(23), miso=Pin(12), mosi=Pin(13)) sd = sdcard.SDCard(spi, Pin(2, Pin.OUT)) oled.text('Modulo SD listo', 0, 10) oled.show() # inicializacion modulo GPS gps = UART(2, 115200) gps.init(9600, bits=8, parity=None, stop=1, tx=17, rx=5) oled.text('Gps...OK', 0, 20) oled.show() os.mount(sd, '/fc') gps_data = 'hola123' filename = '/fc/gps_data.txt' with open(filename, 'w') as f:
i2c = I2C(-1, Pin(SCL), Pin(SDA)) p = ms5837.MS5837(model='MODEL_30BA', i2c=i2c) t = tsys01.TSYS01(i2c) p.init() temp_acc = t.getTemp() temp, pressure, depth = p.get_measurement() print(temp_acc) print(temp, pressure, depth) sck = Pin(5) mosi = Pin(18) miso = Pin(19) cs = Pin(14, Pin.OUT) spi2 = SPI(2, baudrate=5000000, sck=sck, mosi=mosi, miso=miso) sd = sdcard.SDCard(spi2, cs) os.mount(sd, '/sd') output = os.listdir('/sd') print(output) f = open('/sd/data.txt', 'a') data_str = "%.3f %3.f\n" % (temp_acc, temp) f.write(data_str) f.close() spi2.deinit()
# Mount the SD card # Peter hinch 30th Jan 2016 # adapted to the WeMos D1 mini (ESP8266 or ESP32) by Uli Raich import sys, os, sdcard, machine if sys.platform == 'esp8266': print('SD card on ESP8266') SPI_CS = 15 spi = machine.SPI(1) elif sys.platform == 'esp32': print('SD card on ESP32') sck = machine.Pin(18) miso = machine.Pin(19) mosi = machine.Pin(23) SPI_CS = 5 spi = machine.SPI(2, baudrate=32000000, sck=sck, mosi=mosi, miso=miso) spi.init() # Ensure right baudrate sd = sdcard.SDCard(spi, machine.Pin(SPI_CS)) # ESP8266 version print("Sd card created") try: os.mount(sd, '/sd') except: print("Cannot mount file system on sd card, already mounted?") # sys.exit() print('Filesystem check') print(os.listdir('/sd'))
def __init__(self): self.spi = machine.SPI(1) spi.init() sd = sdcard.SDCard(spi, machine(SPI_CS))
def sdtest(): print("1") #hardware spi spi = SPI(2, baudrate=10000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=Pin(18, Pin.OUT, Pin.PULL_DOWN), mosi=Pin(23, Pin.OUT, Pin.PULL_UP), miso=Pin(19, Pin.IN, Pin.PULL_UP)) spi.init() # Ensure right baudrate sd = sdcard.SDCard(spi, Pin(22)) # Compatible with PCB vfs = os.VfsFat(sd) os.mount(vfs, "/fc") print("Filesystem check") print(os.listdir("/fc")) print("1") line = "abcdefghijklmnopqrstuvwxyz\n" lines = line * 200 # 5400 chars short = "1234567890\n" print("1") fn = "/fc/rats.txt" print() print("Multiple block read/write") with open(fn, "w") as f: n = f.write(lines) print(n, "bytes written") n = f.write(short) print(n, "bytes written") n = f.write(lines) print(n, "bytes written") with open(fn, "r") as f: result1 = f.read() print(len(result1), "bytes read") fn = "/fc/rats1.txt" print() print("Single block read/write") with open(fn, "w") as f: n = f.write(short) # one block print(n, "bytes written") with open(fn, "r") as f: result2 = f.read() print(len(result2), "bytes read") os.umount("/fc") print() print("Verifying data read back") success = True if result1 == "".join((lines, short, lines)): print("Large file Pass") else: print("Large file Fail") success = False if result2 == short: print("Small file Pass") else: print("Small file Fail") success = False print() print("Tests", "passed" if success else "failed")
sdin_pin = Pin(12) audio_out = I2S(I2S.NUM0, bck=bck_pin, ws=ws_pin, sdin=sdin_pin, standard=I2S.PHILIPS, mode=I2S.MASTER_RX, dataformat=I2S.B32, channelformat=I2S.RIGHT_LEFT, samplerate=SAMPLES_PER_SECOND, dmacount=8, dmalen=256) spi = SPI(1, sck=Pin(18), mosi=Pin(23), miso=Pin(19)) sd = sdcard.SDCard(spi, Pin(4)) uos.mount(sd, "/sd") s = open('/sd/mic_recording.wav', 'wb') s.write(wav_header) mic_samples = bytearray(SAMPLE_BLOCK_SIZE) sd_samples = bytearray(SDCARD_SECTOR_SIZE) numread = 0 numwrite = 0 for _ in range(WAV_DATA_SIZE // SDCARD_SECTOR_SIZE): try: numread = audio_out.readinto(mic_samples) prune(mic_samples, sd_samples) numwrite = s.write(sd_samples) except KeyboardInterrupt:
audio_in = I2S( I2S.NUM0, bck=bck_pin, ws=ws_pin, sdin=sdin_pin, standard=I2S.PHILIPS, mode=I2S.MASTER_RX, dataformat=I2S.B32, # Each sample will only take up 4bytes in DMA memory # NOTE: ONLY_RIGHT actually samples left channel. channelformat=I2S.ONLY_RIGHT, # Only sample single left channel (mono mic) samplerate=SAMPLES_PER_SECOND, dmacount=32, dmalen=DMA_LEN) spi = SPI(sck=Pin(23), mosi=Pin(12), miso=Pin(14)) sd = sdcard.SDCard(spi, Pin(2)) uos.mount(sd, "/sd") s = open('/sd/mic_recording_32bits.wav', 'wb') s.write(wav_header) mic_samples = bytearray(SAMPLE_BLOCK_SIZE) TOTAL_BYTES = RECORD_TIME_IN_SECONDS * SAMPLES_PER_SECOND * BYTES_PER_SAMPLE bytes_written = 0 # Keep recording until enough samples are written while bytes_written < TOTAL_BYTES: try: numread = 0 numwrite = 0 numread = audio_in.readinto(mic_samples, timeout=5)