2022년 12월 19일 월요일
NEXTION LCD
2022년 12월 7일 수요일
percent
int a = Convert.ToInt16(result[1]);
int b = Convert.ToInt16(result[3]);
int cappercent =(int) (((float) b / (float) a) * 100);
2022년 12월 1일 목요일
arduino pro micro bootloader upload
MCU board <== ISP MK2 connection
arduino ide board pro micro select
arduino ide bootloader upload
usb cable connect
2022년 11월 27일 일요일
mariadb thread pool
꿈꾸는 개발자, DBA 커뮤니티 구루비 (gurubee.net)
MySql/MariaDB에서 발생하는 Connection 끊김 문제 해결하기 | SK(주) C&C’s TECH BLOG (engineering-skcc.github.io)
- wait_timeout 설정값 변경
설정값 변경 후에는 DB를 재시작 필요함
1. Command Line 명령어로 Parameter 설정값 변경
set global wait_timeout = 대기시간(초)
set session wait_timeout = 대기시간(초)
2. my.cnf 파일에서 설정값 변경(MariaDB의 경우는 50-server.cnf 파일)
wait_timeout = 대기시간(초)
extra_max_connections
MariaDB [(none)]> set global extra_max_connections = 3;
save and exit
mysql> FLUSH PRIVILEGES; mysql> exit
2022년 11월 20일 일요일
2022년 11월 15일 화요일
/etc/crontab
자동삭제 등록
/etc/crontab 에 등록 - 자동재시작과
00 00 * * * root /home/pi/Downloads/lcdst7735/DeleteLog.sh
59 23 * * * root /sbin/shutdown -r now
라즈베리파이 log파일 관리 DeleteLog.sh
#!/bin/sh
#생성 된지 7일이 지난 로그를 삭제하는 Script
############################################
# variable
############################################
chmonitor_log_path=/home/pi/log
sudo /usr/bin/find ${chmonitor_log_path}/* -type -f -mtime +30 -exec rm {} +
sudo /usr/bin/find /var/log/ -type f -mtime +14 -exec rm {} +
2022년 11월 3일 목요일
SC16IS752
SC16IS752/RaspberryPi at master · nopnop2002/SC16IS752 · GitHub
while(1) {
/*
SC16IS750_write(&dev, SC16IS750_CHANNEL_A, 0x55); // 01010101
delay(10);
if (SC16IS750_available(&dev, SC16IS750_CHANNEL_B)==0) {
printf("serial communication error 1\n");
break;
}
if (SC16IS750_read(&dev, SC16IS750_CHANNEL_B)!=0x55) {
printf("serial communication error 2\n");
break;
}
delay(200);
*/
SC16IS750_write(&dev, SC16IS750_CHANNEL_B, 0xAA); // 10101010
delay(10);
if (SC16IS750_available(&dev, SC16IS750_CHANNEL_A)==0) {
printf("serial communication error 3\n");
break;
}
if (SC16IS750_read(&dev, SC16IS750_CHANNEL_A)!=0xAA) {
printf("serial communication error 4\n");
break;
}
delay(200);
}
return 0;
2022년 10월 13일 목요일
2022년 10월 11일 화요일
자동 시작을 사용하는 방법 - 라즈베리 파이 OS (데스크탑)
출처: 스티커 : 자동 시작을 사용하는 방법 - 라즈베리 파이 OS (데스크탑) - 라즈베리 파이 포럼 (raspberrypi.com)
자동 시작 사용 방법 - 라즈베리 파이 OS (데스크탑)
아래에 설명 된 설정과 기본값은 Raspbian 'Buster'및 이후 RPi OS 릴리스에서 찾을 수 있습니다.
Raspbian 'Stretch'와 릴리스 전에는 아래에 설명 된대로 다른 기본값을 사용했습니다.
자동 시작 기능을 사용하여 부팅 시 모든 앱, 스크립트 또는 명령(사용자 로그인)을 자동으로 시작할 수 있습니다. 데스크톱(GUI)으로 부팅을 사용하도록 설정해야 합니다.
자동 시작은 데스크톱 앱 또는 데스크톱(GUI)이 필요한 스크립트를 실행해야 할 때 특히 유용합니다.
rc.local 또는 cron @reboot과 같은 다른 방법은 GUI 프로그램이 데스크톱이 준비되기 전에 앱을 시작하려고 시도하여 열리지 못하게하므로 GUI 프로그램을 쉽게 처리하지 못합니다.
4 가지 자동 시작 방법 또는 옵션이 있습니다 : • 시스템 (모든 사용자) *** '버스터'및 이후 OS 릴리스의 기본값 *** • 사용자 (특정 사용자) *** '스트레치'및 이전 OS 릴리스의 기본값 *** • .desktop 파일을 사용하는 기존 (모든 사용자)
• .desktop 파일을
사용하는 기존 (특정 사용자) 시스템 방법 :
System 메소드는 필요한 자동 시작 파일이 이미 존재하고 간단한 편집으로 명령을 쉽게 추가 할 수 있으므로 가장 쉽습니다. 기본적으로 시스템 자동 시작은 모든 사용자에게 적용되며 사용자가 로그인할 때마다 실행됩니다. 시스템 자동 시작 파일은 여기에 있습니다.
/etc/xdg/lxsession/LXDE-pi/
nano 편집기를 사용하여 시스템 자동 시작을 열려면:
코드: 모두 선택
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
사용자 메서드:
사용자 메서드는 System 메서드와 거의 동일하게 작동하지만 각 사용자에 대해 고유한 또는 사용자 지정 자동 시작 파일을 허용합니다. 한 명의 사용자 (pi) 만 있거나 여러 사용자가 로그인 / 부팅시 시작된 다른 앱이나 스크립트를 필요로하지 않는 경우 사용자 방법을 수행하는 데 이점이 없습니다.
사용자 자동 시작 파일 및 연관된 경로는 기본적으로 존재하지 않습니다.
파이 사용자 자동 시작은 /home/pi/.config/lxsession/LXDE-pi/ (사용자 pi가 아닌 경우 사용자 이름을 pi /home/{user}/.config/lxsession/LXDE-pi/로 대체합니다).
먼저 lxsession 및 LXDE-pi 하위 디렉토리를 작성한 다음 시스템 자동 시작을 사용자 위치에 복사해야합니다.
사용자 파이의 경우 :
코드: 모두 선택
mkdir /home/pi/.config/lxsession
mkdir /home/pi/.config/lxsession/LXDE-pi
cp /etc/xdg/lxsession/LXDE-pi/autostart /home/pi/.config/lxsession/LXDE-pi/
nano 편집기를 사용하여 사용자 자동 시작을 열려면:
코드: 모두 선택
nano /home/pi/.config/lxsession/LXDE-pi/autostart
자동 시작 파일(시스템 또는 사용자) 사용: 기본 시스템 자동 시작 파일:
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
• xscreensaver 명령은 xscreensaver를 설치 한 경우에만 관련이 있습니다. 그렇지 않은 경우 제거하거나 무시할 수 있습니다.
• @ 선택 사항입니다. @present를 사용하면 첫 번째 시도에서 오류가 발생하면 시스템은 포기하기 전에 명령을 최대 4 번 더 실행하려고 시도합니다.
• 자동 시작 파일은 bash 스크립트가 아니며 다르게 처리됩니다. 자동 시작 파일의 명령은 거의 동시에 병렬 방식으로 독립적으로 처리됩니다. 또는 시스템은 다음 명령을 시작하기 전에 이전 명령이 완료될 때까지 기다리지 않습니다. 특정 순서로 실행되는 데 의존하는 명령이 여러 개인 경우 bash 스크립트에 명령을 넣은 다음 자동 시작에서 bash 스크립트를 호출해야합니다.
• 자동 시작으로 시작된 모든 프로그램은 백그라운드에서 실행되므로 명령 끝에서 & 사용할 필요가 없습니다.
• 자동 시작에서 스크립트에 대한 전체 경로를 사용하는 것이 중요합니다. 스크립트 내의 또한 호출에는 전체 경로가 지정되어 있어야 합니다. 설치된 앱에 대한 경로는 필요하지 않습니다.
• 스크립트를 실행 가능하게 만들어야 합니다.
• 스크립트에 키보드 및/또는 콘솔 상호 작용이 필요한 경우 lxterminal -e 명령을 사용합니다. 아래의 예제와 참고 사항을 참조하십시오.
• 명령 또는 앱에 네트워크가 필요하고 자동 시작에서 작동하지 않는 것 같으면 sudo raspi-config
에서 부팅 시 네트워크 대기 옵션을 사용하도록 설정
• 드물게 스크립트를 시작하기 전에 지연을 추가하여 앱이 시작되기 전에 데스크톱에 부팅 프로세스를 완료하는 데 더 많은 시간을 할애해야 할 수도 있습니다. 이것은 bash sleep 명령으로 수행 할 수 있습니다. 자동 시작에서 sleep 명령을 직접 추가하려고 시도하지 않으면 작동하지 않습니다. 대신 bash 스크립트에서 sleep 명령을 사용하십시오.
샘플 자동 시작 파일: 계산기를 시작하는 예:
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@galculator
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@chromium-browser www.raspberrypi.org
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@python3 /path/my_script.py
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal -e python3 /path/my_script.py
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@bash /path/my_script
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal -e bash /path/my_script
코드: 모두 선택
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal
(아래 노트는 lxterminal -e가 자동 시작 파일에서 직접 사용되는 경우에 적용됩니다. 언급 된 동작은 터미널 명령 줄에서 실행할 때 발생하는 동작과 다를 수 있습니다.
스크립트의 경로/파일 이름에 ' 또는 ''가 없습니다. 즉, 공백이 있는 경로나 파일 이름은 사용할 수 없습니다. 대신 bash 스크립트를 사용하십시오.
한 줄에 단 1 개의 명령. (여러 명령을 지정하는 데 사용할 수 없음). 대신 bash 스크립트에 여러 명령을 넣으십시오.
스크립트 또는 명령이 어떤 이유로 든 명령 줄로 종료되면 터미널은 즉시 닫힙니다. 즉, 오류가 있거나 프로그램이 종료되면 터미널 창이 너무 빨리 깜박이므로 어떤 일이 일어 났는지 볼 수 없습니다.
전통적인 시스템 방법 (모든 사용자) :
2020 년 12 월 릴리스부터 Raspberry Pi OS는 이제 /etc/xdg / autostart 디렉토리를 사용하여 프린터 등을위한 백그라운드 응용 프로그램을 시작합니다. 이 디렉터리를 사용하여 모든 사용자에게 적용되는 앱 또는 스크립트를 시작할 수 있습니다.
여기서 자동 시작은 파일이 아닌 디렉토리입니다.
이 메서드는 자동 시작 파일을 사용하지 않습니다. 대신 filename.desktop 파일을 사용합니다. 아래의 .desktop 파일 예제를 참조하십시오.
전통적인 사용자 방법 (특정 사용자) :
전통적인 방법에는 사용자 기반 옵션도 있습니다. 파이 사용자 /home/pi/.config/autostart/ 또는 다른 사용자 /home/{user}/.config/autostart/
존재하지
않는 경우 auotstart 디렉토리를 만들어야 할 수도 있습니다. 시스템 자동 시작 파일 또는 사용자 자동 시작 파일(있는 경우)은 .desktop 파일과 함께 실행 및 처리됩니다.
또한 시스템 /etc/xdg/autostart를 위한 .desktop 파일과 사용자 홈 디렉토리 /home/pi/.config/autostart/의 .desktop 파일이 모두 처리됩니다.
파일 관리자를 시작하는 예제 .desktop 파일:
코드: 모두 선택
[Desktop Entry]
Name=File Manager
Exec=pcmanfm
Type=Application
여러 .desktop 파일을 가질 수 있습니다.
2022년 10월 4일 화요일
What is the effective internal resistance when n number of batteries are connected in parallel and why?
The internal resistance can vary with things like battery age and temperature. In 10 minutes, the resistance value might be different! A common AA alkaline battery might have anywhere between 0.1 Ω and 0.9 Ω internal resistance
When designing a circuit with a battery, we often assume that the battery is an ideal voltage source. This means that no matter how much or little load we attach to the battery, the voltage at the source's terminals will always stay the same.
If we model this battery as an ideal voltage source, changing the value of R
L
does not affect the voltage between the battery's terminals
In reality, several factors can limit a battery's ability to act as an ideal voltage source. Battery size, chemical properties, age, and temperature all affect the amount of current a battery is able to source. As a result, we can create a better model of a battery with an ideal voltage source and a resistor in series.
Batteries can be modeled as an ideal voltage source with a series resistor (labeled R
I
)
We can measure the voltage of a battery across its terminals without any load connected. This is known as the open-circuit voltage (V
OC
).
Measuring the voltage of a AA alkaline cell with no load attached
Note that because no current is flowing across the internal resistor, the voltage drop across it is 0 V. Therefore, we can assume that V
OC
is equal to the voltage of the ideal voltage source in the battery.
If we connect a load across the battery, the voltage across the terminals drops.
In this, we are measuring the voltage drop across a 4 Ω resistor
This drop in voltage is caused by the internal resistance of the battery. We can calculate the internal resistance if we take readings of the open-circuit voltage and the voltage across the battery's terminals with a load attached.
To start, we create a diagram showing our circuit.
Here is our circuit. We want to calculate R
I
.
We can plug in the loaded voltage we measured (V
L
) and the value of the resistor (R
L
) into Ohm's Law to get the current flowing through the circuit (I).
We also need to get the voltage across the internal resistor. We can do that using Kirchhoff's Voltage Law. Simplified for this circuit, we can say that the voltage drop across both resistors must add up to the voltage of the ideal voltage source.
Now that we know the voltage drop across the internal resistor and the current through it, we can use Ohm's Law again to find its resistance.
From this, we can see that the internal resistance (at this moment) of the AA cell is 0.273 Ω.
Source - learn.sparkfun