'잡동사니'에 해당되는 글 13031건

  1. 2023.09.19 FFT RBW
  2. 2023.09.19 DHT22 도착!
  3. 2023.09.19 bmp280 HW-611
  4. 2023.09.18 오랫만에 지름
  5. 2023.09.18 도대체 얘 정체가 머지?
  6. 2023.09.17 반년치 장보기
  7. 2023.09.16 이동 이동 이동
  8. 2023.09.15 바쁜데 남은게 없는 느낌
  9. 2023.09.14 알뜰카드 도착, 앱 설치 완료!
  10. 2023.09.14 arm asm rev

라고 하는게 맞는진 모르겠지만

500개의 데이터를 1초에 샘플링 할 경우

500개의 데이터를 넣냐

100개의 데이터를 넣냐에 따라 나오는결과가 달라지는데 이걸 어떻게 해석하냐에 대한 내용

 

input data

for ( i = 0; i < n; i++ )
{
in[i] = ( double ) sin ( 2.0f * PI * (double)(i * 10) / n);
}

500 에 10 주기 니까 500SPS일 경우 10Hz에 peak가 떠야 한다.

 

500개를 다 넣으면 10Hz 에서 peak가 뜬다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (오른쪽은 왼쪽의 그래프를 X축에 대해서 5배 확대한 것)

 

100개만 넣어서 돌리면, 값은 50개만 나오고(100/2+1) peak는 2에서 나온다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (왼쪽은 오른쪽의 그래프를 X축에 대해서 1/5배로 축소한 것)

 

 

 

상관관계로 보면

샘플링 속도는 동일하고

데이터 갯수가 1/N 만큼 줄어들면

원래 주파수로 환원하기 위해서는 *N을 해야 한다.

 

위의 경우 1/5 였으니까

주파수는 *5를 해야 정상적으로 나오고

다르게 해석하면 5Hz 의 RBW로 분석 주파수 해상도가 낮아졌다 라고 표현하면 될 듯.

'프로그램 사용 > fft, fftw' 카테고리의 다른 글

pffft fft / ifft 테스트  (0) 2024.08.01
fft 결과에 N(입력 샘플 갯수)로 나누는 이유  (0) 2023.09.21
tek.com fft 관련 문서  (0) 2023.07.19
sfft  (0) 2023.07.12
fft window type과 진폭 보정계수  (0) 2023.07.04
Posted by 구차니
embeded/raspberry pi2023. 9. 19. 14:18

저장소 손보고

pi@raspberrypi:~/src $ sudo apt-get update
Get:1 http://archive.raspberrypi.org/debian bullseye InRelease [23.6 kB]
Get:2http://raspbian.raspberrypi.org/raspbian bullseye InRelease [15.0 kB]
Get:3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf Packages [13.2 MB]
Get:4 http://archive.raspberrypi.org/debian bullseye/main armhf Packages [314 kB]
Fetched 13.6 MB in 25s (534 kB/s)                                                                                                
Reading package lists... Done
N: Repository ' http://raspbian.raspberrypi.org/raspbian bullseye InRelease' changed its 'Suite' value from 'stable' to 'oldstable'

pi@raspberrypi:~/src $ sudo apt full-upgrade

[링크 : https://forums.raspberrypi.com/viewtopic.php?t=318302]

 

pip를 이용하여 패키지 설치하고

$ sudo apt-get install python3-pip

[링크 : https://foreverhappiness.tistory.com/67] // pip3가 아니다 ㅠㅠ

 

adafruit_dht 패키지 설치하고

sudo pip3 install Adafruit_DHT
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting Adafruit_DHT
  Downloading Adafruit_DHT-1.4.0.tar.gz (15 kB)
Building wheels for collected packages: Adafruit-DHT
  Building wheel for Adafruit-DHT (setup.py) ... done
  Created wheel for Adafruit-DHT: filename=Adafruit_DHT-1.4.0-cp39-cp39-linux_armv7l.whl size=26725 sha256=6d328e4cac264d9807d07a3f20bbc7eb687bf002ae850b3dcfdae1d5fc4a9a64
  Stored in directory: /root/.cache/pip/wheels/2b/75/fa/27f8bc06878df2b751d348ad98e92361f78ea9f9640c7e6277
Successfully built Adafruit-DHT
Installing collected packages: Adafruit-DHT
Successfully installed Adafruit-DHT-1.4.0

 

소스는 adafruit 에서 만든걸 써서 별거 없는데

import Adafruit_DHT as dht
import time

while True:
    humidity, temperature = dht.read_retry(dht.DHT22, 4)
    print("Temp={0:0.1f}*C  Humidity={1:0.1f}%".format(temperature, humidity))   
time.sleep(1)

[링크 : https://kdjun97.github.io/iot/raspberry-pi-dht22/]

 

예상외로 읽는데 실패가 좀 많은지 의외로 빈번하게 4초 정도 걸리는 경우가 나온다.

pi@raspberrypi:~/src $ time python sen.py 
Temp=26.6*C  Humidity=55.6%
Temperature in Celsius : 26.74 C
Pressure : 1003.37 hPa

real 0m3.937s
user 0m0.370s
sys 0m0.060s

pi@raspberrypi:~/src $ time python sen.py 
Temp=26.6*C  Humidity=55.5%
Temperature in Celsius : 26.74 C
Pressure : 1003.42 hPa

real 0m1.415s
user 0m0.352s
sys 0m0.058s

 

python 에서 멀티 쓰레드로 해서 읽어오게 해야하나..

'embeded > raspberry pi' 카테고리의 다른 글

서보 pan/tilt 조립  (0) 2023.09.23
서보 팬틸트 브라켓 구매  (0) 2023.09.19
bmp280 HW-611  (0) 2023.09.19
라즈베리 파이 openOCD jtag?  (0) 2023.07.24
rpi bear metal  (0) 2023.07.10
Posted by 구차니
embeded/raspberry pi2023. 9. 19. 12:02

코드가 python 2.x 용인것 같아서 3.x로 되도록 대충 바꾸었고,

import smbus 에서 에러가 나서 아래 패키지를 설치하면 해결된다.

$ sudo apt-get install python3-smbus

[링크 : https://forums.raspberrypi.com/viewtopic.php?t=192909]

 

BMP280 이지 BME280이 아니라 습도가 안되서 좀 아쉽..

$ cat bmp280.py 
# Distributed with a free-will license.
# Use it any way you want, profit or free, provided it fits in the licenses of its associated works.
# BMP280
# This code is designed to work with the BMP280_I2CS I2C Mini Module available from ControlEverything.com.
# https://www.controleverything.com/content/Barometer?sku=BMP280_I2CSs#tabs-0-product_tabset-2 
import smbus
import time

# Get I2C bus
bus = smbus.SMBus(1)

# BMP280 address, 0x76(118)
# Read data back from 0x88(136), 24 bytes
b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

# Convert the data
# Temp coefficents
dig_T1 = b1[1] * 256 + b1[0]
dig_T2 = b1[3] * 256 + b1[2]
if dig_T2 > 32767 :
    dig_T2 -= 65536
dig_T3 = b1[5] * 256 + b1[4]
if dig_T3 > 32767 :
    dig_T3 -= 65536


# Pressure coefficents
dig_P1 = b1[7] * 256 + b1[6]
dig_P2 = b1[9] * 256 + b1[8]
if dig_P2 > 32767 :
    dig_P2 -= 65536
dig_P3 = b1[11] * 256 + b1[10]
if dig_P3 > 32767 :
    dig_P3 -= 65536
dig_P4 = b1[13] * 256 + b1[12]
if dig_P4 > 32767 :
    dig_P4 -= 65536
dig_P5 = b1[15] * 256 + b1[14]
if dig_P5 > 32767 :
    dig_P5 -= 65536
dig_P6 = b1[17] * 256 + b1[16]
if dig_P6 > 32767 :
    dig_P6 -= 65536
dig_P7 = b1[19] * 256 + b1[18]
if dig_P7 > 32767 :
    dig_P7 -= 65536
dig_P8 = b1[21] * 256 + b1[20]
if dig_P8 > 32767 :
    dig_P8 -= 65536
dig_P9 = b1[23] * 256 + b1[22]
if dig_P9 > 32767 :
    dig_P9 -= 65536


# BMP280 address, 0x76(118)
# Select Control measurement register, 0xF4(244)
# 0x27(39) Pressure and Temperature Oversampling rate = 1
# Normal mode
bus.write_byte_data(0x76, 0xF4, 0x27)
# BMP280 address, 0x76(118)
# Select Configuration register, 0xF5(245)
# 0xA0(00) Stand_by time = 1000 ms
bus.write_byte_data(0x76, 0xF5, 0xA0)

time.sleep(0.5)

# BMP280 address, 0x76(118)
# Read data back from 0xF7(247), 8 bytes
# Pressure MSB, Pressure LSB, Pressure xLSB, Temperature MSB, Temperature LSB
# Temperature xLSB, Humidity MSB, Humidity LSB
data = bus.read_i2c_block_data(0x76, 0xF7, 8)

# Convert pressure and temperature data to 19-bits
adc_p = ((data[0] * 65536) + (data[1] * 256) + (data[2] & 0xF0)) / 16
adc_t = ((data[3] * 65536) + (data[4] * 256) + (data[5] & 0xF0)) / 16

# Temperature offset calculations
var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2)
var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3)
t_fine = (var1 + var2)
cTemp = (var1 + var2) / 5120.0
fTemp = cTemp * 1.8 + 32


# Pressure offset calculations
var1 = (t_fine / 2.0) - 64000.0
var2 = var1 * var1 * (dig_P6) / 32768.0
var2 = var2 + var1 * (dig_P5) * 2.0
var2 = (var2 / 4.0) + ((dig_P4) * 65536.0)
var1 = ((dig_P3) * var1 * var1 / 524288.0 + ( dig_P2) * var1) / 524288.0
var1 = (1.0 + var1 / 32768.0) * (dig_P1)
p = 1048576.0 - adc_p
p = (p - (var2 / 4096.0)) * 6250.0 / var1
var1 = (dig_P9) * p * p / 2147483648.0
var2 = p * (dig_P8) / 32768.0
pressure = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Output data to screen
print("Temperature in Celsius : %.2f C" %cTemp)
print("Temperature in Fahrenheit : %.2f F" %fTemp)
print("Pressure : %.2f hPa" %pressure)

[링크 : http://www.pibits.net/code/raspberry-pi-and-bmp280-sensor-example.php]

 

+

[링크 : https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf]

 

내가 가진거. HW-611 이라고 써있고 칩은 별다른 마킹이 없는데

i2c 주소는 0x76 이니 맞는거 같긴한데 아닌것 같기도 하고 모르겠다 -ㅁ-

 

'embeded > raspberry pi' 카테고리의 다른 글

서보 팬틸트 브라켓 구매  (0) 2023.09.19
DHT22 도착!  (0) 2023.09.19
라즈베리 파이 openOCD jtag?  (0) 2023.07.24
rpi bear metal  (0) 2023.07.10
라즈베리 3 전원 off  (0) 2023.07.02
Posted by 구차니

습도 센서가 0~20% 는 측정을 못하는 것 밖에 없어서, DHT22 주문 하고

사는김에 배송비도 아낄겸(?) 서보 브라켓 질러서 이제 눈깔을 만들어야 ㅋㅋㅋ

돈 들이면 이렇게 쉬운 것을 ㅋㅋ

 

Posted by 구차니

언제 샀는지도 기억이 안난다 -_-

블로그 뒤져보면 BMP-180을 산거 같은데

검색해보면 BMP-280

그런데 BMP-280은 보쉬 로고도 있어야 하는것 같은데 얘.. 위조품인가?

 

아쉽게도 BME가 필요한데 BMP라서 습도는 없다.

[링크 : https://forum.arduino.cc/t/bmp280-hw-611-e-p-280-library-sensor-fault/590528]

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

밖으로 돌리고 돌리고~  (0) 2023.09.26
오랫만에 지름  (0) 2023.09.18
바쁜데 남은게 없는 느낌  (0) 2023.09.15
알뜰카드 도착, 앱 설치 완료!  (0) 2023.09.14
미칠듯한 피곤  (0) 2023.08.22
Posted by 구차니

신발에 속옷에 왕창 재워두기 모드

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

개 씻김  (0) 2023.09.24
바쁘다 바빠  (0) 2023.09.20
이동 이동 이동  (0) 2023.09.16
사과!!!  (0) 2023.09.12
의약품 RFID  (0) 2023.09.12
Posted by 구차니

장보고 안경 하고 배달하고

어우 바빠 -_ㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

바쁘다 바빠  (0) 2023.09.20
반년치 장보기  (0) 2023.09.17
사과!!!  (0) 2023.09.12
의약품 RFID  (0) 2023.09.12
사과는 애플  (0) 2023.09.11
Posted by 구차니

개발이 아니라 관리가 되면 이런 느낌을 받게 되려나?

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

오랫만에 지름  (0) 2023.09.18
도대체 얘 정체가 머지?  (0) 2023.09.18
알뜰카드 도착, 앱 설치 완료!  (0) 2023.09.14
미칠듯한 피곤  (0) 2023.08.22
다이조아 부품 데이터 시트  (0) 2023.08.10
Posted by 구차니

좀 오래전 부터 고민하던걸 이제 시도!

[링크 : https://alcard.kr/]

 

예전에는 국민은행이 없었는데 이제 생겨서 과감하게 체크로 신청!

포인트로를 쌓아서 먼가 해본적이 없는데(워낙 잘 안쌓이니..)

알뜰교통카드로 사용해서 후불제로 사용하는 금액 전부의 10% 적립되는진 모르겠다.

설마 할인 받아서 캐시백 된건 안된다고 하는건 아니겠지?

아무튼 10%가 2천이니 2만원 후불 교통으로 쓰면 된다는건데 2천점 적립해서 어떻게 쓸수 있냐가 문제일 듯

과거에는 적립금액이 만단위는 되어야 겨우 먼가 쓸 수 있었던것 같은데 좀 나아졌으려나?

[링크 : https://card.kbcard.com/CRD/DVIEW/HCAMCXPRICAC0076?mainCC=a&cooperationcode=09322]

 

신용카드는 연회비 8천에 실적 30만원이라 이래저래 관리가 힘들어서 포기!

 

원래는 집에서 나갈때 출발 누르고

회사 도착할때 도착 누르면 되는것 같은데

"즐겨찾기"에 넣어두면 버튼 누르지 않아도 마일리지가 된다고 한다.

근데 잘 안되면 그냥 꽁돈(?) 날리는 셈이 될 것 같은데 귀찮아도 해봐야 하나..

첫달이니 일단은 내일 바로 즐겨찾기 하고 시도해봐야 할 듯.

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

도대체 얘 정체가 머지?  (0) 2023.09.18
바쁜데 남은게 없는 느낌  (0) 2023.09.15
미칠듯한 피곤  (0) 2023.08.22
다이조아 부품 데이터 시트  (0) 2023.08.10
다이조아 택베도착  (0) 2023.08.09
Posted by 구차니
embeded/ARM2023. 9. 14. 12:33

 

On ARMv6 and above, you can just use the rev instruction, but I assume that you're not allowed to do that for whatever reason.

[링크 : https://stackoverflow.com/questions/2755171/arm-assembly-converting-endianness]

 

REV
Reverse the byte order in a word.

Syntax
REV{cond} Rd, Rn

where:

cond
is an optional condition code.

Rd
is the destination register.

Rn
is the register holding the operand.

[링크 : https://developer.arm.com/documentation/dui0473/m/arm-and-thumb-instructions/rev]

 

unsigned int foo(unsigned int a)
{
  return __builtin_bswap32(a);
}

[링크 : https://stackoverflow.com/questions/35133829/does-arm-gcc-have-a-builtin-function-for-the-assembly-rev-instruction]

[링크 : https://teus.me/726]

 

gcc built-in function 이고 자매품(?) 으로 __builtin_bswap16 이라는 녀석도 있다.

Built-in Function: uint32_t __builtin_bswap32 (uint32_t x)
Similar to __builtin_bswap16, except the argument and return types are 32-bit.

[링크 : https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html]

 

어.. vertorized 안되면.. 그냥 쌩으로 for 돌려야 하는건데...?! 이럼 나가리인데?!?!?

지원되는 GCC 비벡터 내장 함수
마지막 업데이트 날짜: 2023-07-13

IBM® Open XL C/C++ for AIX® 17.1.1 는 다음 GCC 비벡터 내장 함수를 지원합니다.

[링크 : https://www.ibm.com/docs/en/openxl-c-and-cpp-aix/17.1.0?topic=functions-supported-gcc-non-vector-built-in]

'embeded > ARM' 카테고리의 다른 글

emmc 파티션 정렬  (0) 2024.02.07
cortex-a53  (0) 2023.08.31
aarch64 vector register  (0) 2023.08.23
arm vsub operator  (0) 2023.08.09
ARM NEON SLP  (0) 2023.08.07
Posted by 구차니