prjbrook

Umin7.py Combined boardwalk prog

Oct 1st, 2024
70
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.75 KB | None | 0 0
  1. #Sun Sep 29 13:59:57 NZDT 2024.Sun Sep 29 18:09:57 NZDT 2024.
  2. #Sun l29 13:59:57 NZDT 2024.Sun Sep 29 18:09:57 NZDT 2024
  3. #Umin3.py gets edited in Thonny via file explorer. Works. Oled OK
  4. #Next do SPI and SD card stff  Mon Sep 30 12:23:24 NZDT 2024.
  5.  
  6. import network
  7. import socket
  8. import machine
  9. import do_csv, do_log
  10. import sdcard
  11. import os
  12. import onewire, ds18x20, time
  13.  
  14. adcpin = 4
  15. sensor = machine.ADC(adcpin)
  16. #-------------------------oled suff below------------------------------
  17. #set up oled display. NB need ssd1306 file in lib
  18.  
  19. #Next lines are for oled . Originally from digikey.
  20. from machine import Pin, I2C
  21. from ssd1306 import SSD1306_I2C    #make sure ssd1306 for micropythin is in libd
  22. i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)
  23. oled = SSD1306_I2C(128, 64, i2c)
  24. oled.text("Ming5 Hardw7OOct", 0, 0)
  25. oled.show()  
  26. #-------------------------sd card stuff below---------------------
  27.  
  28. # Assign chip select (CS) pin (and start it high)  
  29. cs = machine.Pin(9, machine.Pin.OUT)  #does this really start high?
  30.  
  31. # Intialize SPI peripheral (start with 1 MHz) Check it IS 1000000
  32. spi = machine.SPI(1,
  33.                   baudrate=100000,
  34.                   polarity=0,
  35.                   phase=0,
  36.                   bits=8,
  37.                   firstbit=machine.SPI.MSB,
  38.                   sck=machine.Pin(10),
  39.                   mosi=machine.Pin(11),
  40.                   miso=machine.Pin(8))
  41.  
  42. # Initialize SD card
  43. sd = sdcard.SDCard(spi, cs)     #make sure sdcard.py in path
  44.  
  45. vfs = os.VfsFat(sd)
  46. os.mount(vfs, "/sd")
  47.  
  48. # Create a file and write something to it
  49. with open("/sd/test03.txt", "w") as file:
  50.     file.write("Hello2,WWWWORX12345 69## SD World!\r\n")
  51.     file.write("This is a test and seems to work@@022 ABCDEfg1 Sat Sep 21 12:09:51 NZST 2024\r\n")
  52.     file.write("Fri Sep 20 12:10:40 NZST 2024\r\n")
  53. # Open the file we just created and read from it
  54. with open("/sd/test03.txt", "r") as file:
  55.     data = file.read()
  56.     print(data)
  57. #---------------DS18b20 1wire temp sensor below----------------
  58.  
  59. #Now do DS18b20 temperature stuff. The third sensor.    
  60. ds_pin = machine.Pin(22)
  61. ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
  62.  
  63. roms = ds_sensor.scan()
  64. print('Found DS devices: ', roms)  #will find only one at first
  65. ds_sensor.convert_temp()
  66. time.sleep_ms(750)
  67. for rom in roms:  #keep loop for later multiple roms
  68.     print(rom)   #byte array of Ds18b02. Only one at first
  69.     print(roms[0])
  70.     tempC = ds_sensor.read_temp(roms[0]) #just on sensor at first
  71.     print('temperature (ºC):', "{:.2f}".format(tempC))
  72.     print()
  73.  
  74. #----------------------------network stuff below --------------
  75.  
  76. # Set up access point
  77. ap = network.WLAN(network.AP_IF)
  78. te =""
  79. templ = "template1.html"   #update when form changes
  80. led = machine.Pin("LED", machine.Pin.OUT)
  81. led.on()
  82.  
  83. ap.config(essid='NAME', password='PASSWORD')
  84. ap.active(True)
  85.  
  86. while not ap.isconnected():
  87.     pass
  88.  
  89. print('AP Mode Is Active, You can Now Connect')
  90. print('IP Address To Connect to::', ap.ifconfig()[0])
  91.  
  92. # Set up socket
  93. addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
  94. s = socket.socket()
  95. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)   #promising fix?
  96.  
  97. s.bind(addr)
  98. s.listen(1)
  99.  
  100. print('Listening on', addr)
  101. #----------------------------main loop--------------
  102. while True:
  103.     cl, addr = s.accept()
  104.     print('Got a connection from', addr)
  105.     request = cl.recv(1024)
  106.     request_str = request.decode('utf-8')
  107.     lines = request_str.split('\r\n')
  108.     if lines==['']:
  109.         print("lines have only one value")
  110.     else:
  111.         method, path, protocol = lines[0].split(' ')
  112.         print('The method,path,protocol= ',method,path,protocol)
  113.     if path=='/':
  114.         print("Very short path",path)
  115.     try:
  116.         with open(templ, 'r') as file:  #('simpleled2.html', 'r')
  117.             te = file.read()
  118.     except OSError:
  119.         te = "Error: template0.html file not found."
  120.        
  121.     response = """\
  122. HTTP/:1.1 200 OK
  123. Content-Type: text/html
  124. Content-Length: {}
  125.  
  126. {}
  127.  
  128. """.format(len(te), te)  #(len(x), x)
  129.    
  130. #-------------------do tasks based in path params-------------
  131.     if "toggle" in path:
  132.         led.toggle()
  133.     if "exttemp" in path:
  134.         ds_sensor.convert_temp()
  135.         time.sleep_ms(750)
  136.         tempC = ds_sensor.read_temp(rom)
  137.         et2=str(round(tempC,1))
  138.         response = response.replace("***",et2 )
  139.     if "inttemp" in path:
  140.         volt = (3.3/65535) * sensor.read_u16()
  141.         temperature = 27 - (volt - 0.706)/0.001721
  142.         response = response.replace("***", str(round(temperature,1)))
  143.     if "csv" in path:
  144.         print("csv in path ...")
  145.         response = do_csv.do_csv()
  146.     if "log" in path:
  147.         print("log in path ...")
  148.         response = do_log.do_log()
  149.    
  150.     cl.send(response)
  151.     cl.close()
  152.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment