Skip to main content
Recent Posts
11
Project logs / Re: Really universal soldering controller
Last post by Bernie -
I don't have 5.2C board, I am still on the old board and CPU, but they are near the same except the firmware.
You need to take a short video ( picture ) of the calibr. menu.
When you connect the 245 handle with the cartridge and turn the aligning poth. RC2, is the temperature changes?
You need to check some stuff:
Correct connecting Sense A and Sense B.
3V at Vref and -0.6V at the OpAmps pins and the rest of supply voltages at the time of work.
If possible check the board with smaller than 2.42" LCD

Thanks for your support.
Double checked all connections to the handle one more time, all are correct. Sypply voltages of 12V, 3.3V, -0.6V and Vref are correct.
When in calibration menu I can adjust the R and ADC value by changing the potmeter. Works both on SenseA and B (pressing the menu button for 2 sec). The CJTemp of -273 on the Intrument Info screen is not changing at all.
Have a 1.54" OLED display with 7 pin SPI interface (SSD1309). The only smaller dispkayy I have unfortunately only has IIC interface.
Any signal forms worthwhile to verify with an oscilloscope?
12
Project logs / Re: Really universal soldering controller
Last post by minkok -
Running into a problem with the assembly, have the message "no tool" (board 5.2C)
Using the T245 tip. Calibration works fine.
Tip ID is 1805, so also seems fine.
The info screen gives CJTemp -273 and Room 22.
The tip is not heating. When heating the tip with an external source the -273 is not changing. As the value is -273 it seems the tip is seen at the absolute 0 K. Just wonder where best to search for the short, O/C or even defect.
I don't have 5.2C board, I am still on the old board and CPU, but they are near the same except the firmware.
You need to take a short video ( picture ) of the calibr. menu.
When you connect the 245 handle with the cartridge and turn the aligning poth. RC2, is the temperature changes?
You need to check some stuff:
Correct connecting Sense A and Sense B.
3V at Vref and -0.6V at the OpAmps pins and the rest of supply voltages at the time of work.
If possible check the board with smaller than 2.42" LCD
13
Project logs / Re: Really universal soldering controller
Last post by Bernie -
Running into a problem with the assembly, have the message "no tool" (board 5.2C)
Using the T245 tip. Calibration works fine.
Tip ID is 1805, so also seems fine.
The info screen gives CJTemp -273 and Room 22.
The tip is not heating. When heating the tip with an external source the -273 is not changing. As the value is -273 it seems the tip is seen at the absolute 0 K. Just wonder where best to search for the short, O/C or even defect.
14
Project logs / Weather station based on ESP32 and HMI
Last post by Ervin -
Brief introduction

This application function is divided into three parts: temperature monitoring, humidity monitoring, and light monitoring. After startup, there will be a boot interface first. After a moment, you will enter the main function interface. In this interface, we can select the monitoring items, such as temperature, humidity, and illumination. There will be a text box under the temperature monitoring interface to display the temperature data transmitted from esp32, a "start" button, and a "stop" button to start and stop the temperature monitoring. If you want to exit the interface, you can select the "return" button; the second item is humidity monitoring, and there is also a text box under this interface for displaying esp 32. For the humidity data transmitted, the "start" and "stop" buttons are used to start and stop monitoring, and a return button is used to exit the current interface. The third item is light intensity monitoring. Different from the previous two functions, counting is used here, and one is added every time there is light.

Related devices
 
1. DHT11 * 1;
2. Photosensitive resistance sensor * 1;
3. DuPont line * 8;
4. Esp32 module * 1;
5. STONE TFT LCD screen * 1.

GUI design



Connection



Code

Code: [Select]
if(Serial.available() != 0)

  {

    for(cout_i = 0; cout_i < 9; cout_i ++)

    {

        RecievedTemp[cout_i] = Serial.read();

    }

    switch(RecievedTemp[5])

    {

    case 0x0D://Temperature start

        TemperatureBool = true;

        break;

    case 0x0E://Temperature stop

        TemperatureBool = false;

        TemperatureOutput[6] = 0;

        TemperatureOutput[7] = 0;

        Serial.write(TemperatureOutput, 8);

        break;

    case 0x0F://Temperature back

        TemperatureBool = false;

        break;

    case 0x11://Humidity start

      HumidityBool = true;

        break;

    case 0x12://Humidity stop

        HumidityBool = false;

        HumidityValue = 0;

        HumidityOutput[7] = HumidityValue;

        Serial.write(HumidityOutput, 8);

        break;

    case 0x10://Humidity back

        HumidityBool = false;

        break;

    case 0x14://illumination start

      illuminationBool = true;

      illuminationState = false;

        break;

Result demo

18
Project logs / Re: Collective purchase set of parts for assembly Unisolder 5.2
Last post by vulkan35 -
Reserve for November 2021 2-3 assembled kit pcb Unisolder revision 5.2C
Pic32 latest version firmware, tested 100%.

Kit pcb + display oled 1.3" (available for reserve 1 set).
1. assembled pcb front + back + oled 1.3" + sleep/tip change v1.2 mini.
2. cable (CNTR + J2 + J3 + J6 + 24VAC).
total price: kit + delivery of small package = $162 USD.

Kit pcb + display oled 1.54" (available for reserve 2 set).
1. assembled pcb front + back + oled 1.54" + sleep/tip change v1.2 mini.
2. cable (CNTR + J2 + J3 + J6 + 24VAC).
total price: kit + delivery of small package = $164 USD.

19
General discussion / newcomer
Last post by Ervin -
Hello, I'm new here, I'm an amateur electronics enthusiast, I like to do my own DIY. and I love that I can learn more here.
20
Arduino / Intelligent access control based on ESP32 and LCD
Last post by Ervin -
Required materials

ESP32
KOB electronic lock
Relay
STONE STWI070WT-01 display
MFRC522 module

Realized function

1. card registration.
2. username and password registration.
3. card swipe to unlock the electronic lock.
4. User name and password to unlock the electronic lock.

Connection diagram



GUI design



code sharing

Code: [Select]
import mfrc522
import time
import _thread
from os import uname
from machine import Pin, UART
#from pyb import UART
#import machine

suos = Pin(32,Pin.OUT)
uart2 = UART(2, baudrate=115200, rx=16,tx=17,timeout=10)

ESP32_HSPI_CLOCK = 14
ESP32_HSPI_SLAVE_SELECT = 15
ESP32_HSPI_MISO = 12
ESP32_HSPI_MOSI = 13
ESP32_MFRC522_RST = 5

rx3 = []
rx_name = []
user_id_flag = False
password_flag = False
temp_id = ''
temp_mima = ''
personnel_id = {'zbw':[236,230,169,47],'lbw':[19,165,93,4]}
personnel_ps = {'zbw':'zbw3366','lbw':'lbwnb'}
admin_password = ('yyds')
button_cmd = [16,1]
edit1_cmd = [16,112]
edit2_cmd = [16,113]
edit3_cmd = [16,114]

if uname()[0] == 'esp32':
rdr = mfrc522.MFRC522(ESP32_HSPI_CLOCK, ESP32_HSPI_MOSI, ESP32_HSPI_MISO, ESP32_MFRC522_RST, ESP32_HSPI_SLAVE_SELECT)

def do_write():
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)
if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print("  - tag type: 0x%02x" % tag_type)
print("  - uid : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
stat = rdr.write(8, b"\x00\x53\x00\x54\x00\x4F\x00\x4E\x00\x45\x0a\x0b\x0c\x0d\x0e\x0f")
rdr.stop_crypto1()
if stat == rdr.OK:
print("Data written to card")
else:
print("Failed to write data to card")
else:
print("Authentication error")
else:
print("Failed to select tag")

except KeyboardInterrupt:
print("write error")


def do_read():
while True:
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)

if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print("  - tag type: 0x%02x" % tag_type)
print("  - uid   : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
print("Address 8 data: %s" % rdr.read(8))
for ps in personnel_id:
if raw_uid[0:4:1] == personnel_id.get(ps):
suos.value(1)
print(ps)
uart_write(ps, *raw_uid[0:4:1])
time.sleep(3)
uart2.sendbreak()
break
rdr.stop_crypto1()
time.sleep(3)
suos.value(0)
else:
print("Authentication error")
else:
print("Failed to select tag")
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
print(rx2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back3':
return
except KeyboardInterrupt:
print("read error")

def do_read2 (idd):
print(idd)
while True:
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)

if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print("  - tag type: 0x%02x" % tag_type)
print("  - uid   : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
print("Address 8 data: %s" % rdr.read(8))
personnel_id[idd] = raw_uid[0:4:1]
uart_write3(*raw_uid[0:4:1])
rdr.stop_crypto1()
else:
print("Authentication error")
else:
print("Failed to select tag")
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back1':
return

except KeyboardInterrupt:
print("read error")

def uart_write(text, *ids):
# print(text, *ids)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardname1","text":"'+str(text)+'"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid1","text":"'+str(ids)+'"}>ET')
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock1","visible":true}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardname1","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid1","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock1","visible":false}>ET')

def uart_write2(text,text2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+text+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+text2+'"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit2","text":"''"}>ET')

def uart_write3(*id2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+str(id2)+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"''"}>ET')

def uart_write4(text,text2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"login","text":"'+text+'"}>ET')
time.sleep(1)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"login","text":"'+text2+'"}>ET')
time.sleep(1)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit3","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit4","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit7","text":"''"}>ET')

def uart_write5():
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+str(id2)+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"''"}>ET')

def card_zhuce():
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if data_id_st2 == 'edit1':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
if data_id_st4 != '':
name = True
elif data_id_st2 == 'edit2':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
if data_id_st6 == admin_password:
admin = True
uart_write2('Verification passed!','Please place the card!')
do_read2(data_id_st4)
return

def mima_zuce():
temp_id3 = ''
temp_mima3 = ''
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
# data_end = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
# if (rx2[rx_num] == 'T') and (rx2[rx_num-1] == 'E') and (rx2[rx_num-2] == '>'):
# break
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back2':
return
if data_id_st2 == 'edit3':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
user_id_flag = True
temp_id3 = data_id_st4
# personnel_ps[temp_id] = raw_uid[0:4:1]
elif data_id_st2 == 'edit4':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
print(data_id_st6)
# if personnel_ps.get(temp_id) == data_id_st6:
password_flag = True
temp_mima3 = data_id_st6
# personnel_ps[temp_id] = password_flag

# print(rx2,user_id_flag,password_flag)

elif data_id_st2 == 'edit7':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
if (data_id_st6 == admin_password) and (password_flag == True) and (user_id_flag == True):
admin = True
personnel_ps[temp_id3] = temp_mima3
password_flag = False
user_id_flag = False
uart_write4('Verification passed!','login was successful!')


def password_loin():
temp_id2 = ''
temp_mima = ''
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
# data_end = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
# if (rx2[rx_num] == 'T') and (rx2[rx_num-1] == 'E') and (rx2[rx_num-2] == '>'):
# break
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back4':
return
if data_id_st2 == 'edit5':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
if data_id_st4 in personnel_ps:
user_id_flag = True
temp_id2 = data_id_st4
elif data_id_st2 == 'edit6':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
print(data_id_st6)
print(temp_id2)
print(personnel_ps)
if personnel_ps.get(temp_id2) == data_id_st6:
password_flag = True

# print(rx2,user_id_flag,password_flag)
print(user_id_flag,password_flag)
if (password_flag == True) and (user_id_flag == True):
uart_write(temp_id2,temp_id2)
password_flag = False
user_id_flag = False
suos.value(1)
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock2","visible":true}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit5","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit6","text":"''"}>ET')
time.sleep(3)
# uart_write('student','')
suos.value(0)
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock2","visible":false}>ET')
uart2.sendbreak()

while True:
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
# time.sleep(1)
uart2.sendbreak()
# time.sleep(1)
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
print(rx2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'card1':
card_zhuce()
elif data_name2 == 'password1':
mima_zuce()
elif data_name2 == 'card2':
do_read()
elif data_name2 == 'password2':
password_loin()


video demo

https://www.youtube.com/watch?v=Gl-Nofxb6I4