embeded/eps82662025. 1. 6. 23:51

 

[링크 : https://ko.aliexpress.com/item/1005007898297522.html] 2,180원

[링크 : https://www.devicemart.co.kr/goods/view?no=1378117] 2,500원

 

WeMos D1 mini 계열이라고 부르면 되려나?

[링크 : https://m.blog.naver.com/simjk98/222439536594]

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

esp8266 sdio wifi  (0) 2024.09.12
esp8266 wifi at 명령어  (0) 2023.12.12
esp8266 nodemcu v3 기본 펌웨어  (0) 2023.12.11
esp8266 esptool.py  (0) 2023.12.11
esp8266 microUSB 연결 2  (0) 2023.12.11
Posted by 구차니
embeded/esp322025. 1. 6. 23:47

esp32-wrover 라고 레이저 각인되어 있는데

[링크 : https://www.espressif.com/sites/default/files/documentation/esp32-wrover-e_esp32-wrover-ie_datasheet_en.pdf]

 

보드 실크만 따라가서 찾으면 esp32-wroom-32 라는 정보가 나온다. 다른 모델인가?

[링크 : https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32/esp32-devkitc/user_guide.html]

 

가격은 천차만별..!

[링크 : https://ko.aliexpress.com/item/1005006212080137.html] 4,540원

[링크 : https://vctec.co.kr/product/esp32-devkitc-v4-보드-esp32-devkitc-32d-esp32-devkitc-v4-pcb-antenna/16616/] 11,320원

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

esp32cam sdio wifi  (0) 2024.09.11
esp32 wifi/bt on linux  (0) 2024.08.13
esp32 at 소스 빌드(윈도우)  (0) 2023.12.19
esp32 at source 빌드(리눅스)  (0) 2023.12.19
esp-idf on linux  (0) 2023.12.19
Posted by 구차니
embeded2025. 1. 6. 23:29

아래의 물품들을 지름.

mqtt와 zigbee를 해볼수 있는 절호의 기회!

esp32 esp8266 등도 있어서 일단 금액도 얼마 안하니 질러질러!


3. CC2531 (2개) - 개당 O천원 : https://psychoria.tistory.com/m/692 에 나오는대로 Zigbee2MQTT 플래싱해 둔 상태입니다. 플래싱만하고 사용하지는 않았습니다.

4. ESP-WROVER (2개) - 개당 O천원 : ESP32, 마이크로5핀이며 1개는 squeezelite-esp32로 사용, 1개는 보관만 했습니다. 초기화해서 쓰시면 됩니다.

7. HTU2X 온습도센서 (2개) - 개당 O천원 : 핀은 직접 납땜한 것입니다.

8. USB 내부 헤더 - O천원 : 메인보드 usb 2.0 핀에 직접 꽂아서 usb 메모리 같은거 연결할 수 있는 헤더입니다.

9. ESP8266 보드 (2개) - 개당 O천원 : CH340, 마이크로5핀이며 D1 mini라고 알리에서 구입했는데 기판에 그런 표기는 없네요. 3개 구매후 남은 미사용품 2개입니다.

 

습도센서는 상대습도 0~100 / -40~125도 라는데

실세 20~80% 만 잴수 있는거 아닌가 의심이..

[링크 : https://www.ttieurope.com/content/dam/tti-europe/manufacturers/te-connectivity/resources/c1de7b32-1394-42ed-9516-4647502d9aed.pdf]

'embeded' 카테고리의 다른 글

arm-none-eabi는 -pthread 미지원  (0) 2021.01.11
i.mx6quad용 gcc 옵션  (0) 2021.01.08
orange pi r1+  (0) 2021.01.08
i.mx6 solo 비디오 성능 문제?  (0) 2020.10.19
간만에 부품 지름  (2) 2020.03.04
Posted by 구차니
embeded/jetson2025. 1. 3. 09:16

치사하게(?) GFLOPS에서 갑자기 TOPS로 바꾸면서

동등한 비교가 힘들어졌는데

Nano TX1 TX2 TX2i TX2 NX Xavier NX AGX Xavier Orin nano Orin NX AGX Orin
0.5
TFLOPS
1
TFLOPS
1.33
TFLOPS
1.33
TFLOPS
1.33
TFLOPS
21 TOPS 32 TOPS 40 TOPS 100 TOPS 274TOPS

[링크 : https://www.bvm.co.uk/edge-ai-computing/nvidia-jetson-comparison-and-faq/]

 

그럼에도 불구하고 pascal 에서는 * 4를 하면 된다고 한다.

It basically depends on the GPU architecture. In pascal architecture 1TFLOP = 4TOPS.
OK, so by that comparison NVIDIA Jetson Nano is doing about 2 TOPS

[링크 : https://forum.khadas.com/t/how-many-flops-is-one-tops/8227/6]

 

TX2는 FP16일 경우 1.33TFLOPS 이고

동일 연산으로 AGX Xavier는 2.8TFLOPS 2배 약간 더 되게 향상인데 TOPS로는 엄청나게 뻥튀기 되네?

TX2 AGX Xavier

[링크 : https://www.techpowerup.com/gpu-specs/jetson-tx2.c3231]

[링크 : https://www.techpowerup.com/gpu-specs/jetson-agx-xavier-16-gb.c3232]

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

nvidia jetson tx2 recovery  (0) 2025.01.02
jetracer 보드 i2c 확인  (0) 2023.02.17
jetracer 바퀴 찾기  (0) 2023.02.14
젯슨 레이서 조립 2  (0) 2023.01.21
젯슨 레이서 조립 1  (0) 2023.01.20
Posted by 구차니
embeded/jetson2025. 1. 2. 15:47

microUSB를 통해서 PC와 연결한 상태로

REC 라고도 표현되는 녀석을 누르고 켜니, 아래와 같이 recovery mode로 붙는다. 

$ lsusb -t -v
        |__ Port 2: Dev 18, If 0, Class=Vendor Specific Class, Driver=, 480M
            ID 0955:7c18 NVIDIA Corp. T186 [TX2 Tegra Parker] recovery mode

 

커널 메시지 상으로는 아래와 같이 뜨고 끝

[14325.761506] usb 1-2.2: new high-speed USB device number 18 using xhci_hcd
[14325.852514] usb 1-2.2: New USB device found, idVendor=0955, idProduct=7c18, bcdDevice= 0.00
[14325.852531] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[14325.852538] usb 1-2.2: Product: APX
[14325.852543] usb 1-2.2: Manufacturer: NVIDIA Corp.

 

복구모드에서 기본(?) 이미지 어떻게 굽나...

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

jetson TOPS와 GFLOPS  (0) 2025.01.03
jetracer 보드 i2c 확인  (0) 2023.02.17
jetracer 바퀴 찾기  (0) 2023.02.14
젯슨 레이서 조립 2  (0) 2023.01.21
젯슨 레이서 조립 1  (0) 2023.01.20
Posted by 구차니
embeded/raspberry pi2024. 12. 31. 00:22

 

[링크 : https://www.electronicwings.com/raspberry-pi/raspberry-pi-pwm-generation-using-python-and-c]

[링크 : https://blog.naver.com/emperonics/221821487830]

 

#include <wiringPi.h>

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main (void)
{
  int bright ;

  printf ("Raspberry Pi wiringPi PWM test program\n") ;

  if (wiringPiSetup () == -1)
    exit (1) ;

  pinMode (1, PWM_OUTPUT) ;

  for (;;)
  {
    for (bright = 0 ; bright < 1024 ; ++bright)
    {
      pwmWrite (1, bright) ;
      delay (1) ;
    }

    for (bright = 1023 ; bright >= 0 ; --bright)
    {
      pwmWrite (1, bright) ;
      delay (1) ;
    }
  }

  return 0 ;
}

[링크 : https://github.com/WiringPi/WiringPi/blob/master/examples/pwm.c]

Posted by 구차니
embeded/Cortex-M3 STM2024. 12. 13. 14:13

PWM 이랑 거의 비슷하다

TIM2를 사용할 거고, clock source - internal clock

prescaler는 6MHz로 작동해서 6000 으로 하여 1msec 주기의 tick을 사용한다.

Counter Period는 1000 으로 해서 1000 번의 tick이 모이면 (= 1초) timer interrupt가 발생하게 한다.

 

NVIC Settings에서 TIM2 global interrupt를 발생시키게 하고 프로젝트 갱신하고

 

아래의 함수들을 추가하면 끝

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static int pwm_val = 0;
    static int dir = 1;

    if(dir)
    {
        if(pwm_val < 10)
        {
            pwm_val++;
        }
        else
        {
            dir = 0;
            pwm_val--;
        }
    }
    else
    {
        if(pwm_val > 0)
        {
            pwm_val--;
        }
        else
        {
            dir = 1;
            pwm_val++;
        }
    }
    // printf("pwm_val[%d] dir[%d]\n", pwm_val, dir);
    htim3.Instance->CCR1 = pwm_val;
    htim3.Instance->CCR2 = pwm_val;
}

int main(void)
{
    /* USER CODE BEGIN 2 */
    HAL_TIM_Base_Start_IT(&htim2);
    /* USER CODE END 2 */
    /* Infinite loop */
    /* USER CODE BEGIN WHILE */
    while (1)
    {
        /* USER CODE END WHILE */
        /* USER CODE BEGIN 3 */
        HAL_Delay(10);
    }
    /* USER CODE END 3 */
}

[링크 : https://eteo.tistory.com/73]

Posted by 구차니
embeded/Cortex-M3 STM2024. 12. 13. 12:39

STM32F103RETx 에서 구현 함.

 

CubeIDE 에서 클럭은 12MHz XTAL로 들어오고 있고

TIM3를 사용해야 하니까 APB1 의 클럭을 보면 된다.

TIM1/TIM8은 APB2에 있네

 

APB1 Timer clocks는 6MHz

 

핀에서 TIM3_CH1 / TIM3_CH2 로 할당하고

Timers - TIM3 에 가서

clock source를 internal clock 으로 바꾸고

channel 1과 channel 2를 PWM Generation CH1/2로 지정해 준다.

그리고 prescaler를 5999 (6000-1) 으로 해주면 6MHz / 6000 이니 1msec 를 1tick으로 쓰고

counter Period를 0~9 까지 10을 묶어서 10msec 마다 1번의 pwm을 발생하게 한다

※ 다르게 표현하면 100Hz PWM clock 으로 지정된다.

그리고 PWM Generation Channel 1/2 에서 Pulse (16 bits value) 에는

counter Period 값을 분모로 하는 값을 지정하면 되고 "Pulse / Counter Period"로 Duty Rate이 지정된다.

 

그러면 50% duty로 100Hz의 PWM 파형이 생성된다.

 

약간의 꽁수로(?) 아래와 같이 해주면

50ms 마다 1씩 변화되어 20번의 증감을 통해 1초 주기로 점멸하는 LED가 생성된다.

50ms 마다 바꾸는 것도 다른 타이머를 이용하면 메인 쓰레드에서 안해도 되니 정확한 타이밍이 될 듯.

    static int pwm_val = 0;
    static int dir = 1;

    if(dir)
    {
      if(pwm_val < 10) pwm_val++;
      else
      {
        dir = 0;
        pwm_val--;
      }
    }
    else
    {
      if(pwm_val > 0) pwm_val--;
      else
      {
        dir = 1;
        pwm_val++;
      }
    }
    // printf("pwm_val[%d] dir[%d]\n", pwm_val, dir);
    htim3.Instance->CCR1 = pwm_val;
    htim3.Instance->CCR2 = pwm_val;
    HAL_Delay(50);

 

[링크 : https://pilimage.tistory.com/23]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

STM32 timer 사용하기  (0) 2024.12.13
stm32 gpio ext interrupt 모드  (0) 2024.11.04
stm32f103 adc + dma  (0) 2024.11.04
stm32 adc 읽기(1개로 여러 개 채널)  (0) 2024.10.30
stm32 tim output compare(OC) mode  (0) 2024.07.12
Posted by 구차니
embeded/i2c2024. 12. 11. 10:37

i2cget은 하나의 주소를 읽고 쓰는데 방해

i2cdump는 하나의 칩에 대해서 전체를 읽어서 출력해준다.

 

가장 마지막 b는 byte 단위로 읽기를 의미한다.

아래는 PTN5110 usb pd tcpc 칩의 덤프

# i2cdump -y 3 0x50 b
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: c9 1f 10 51 04 00 12 00 11 30 10 20 00 00 00 00    ???Q?.?.?0? ....
10: 03 02 00 00 ff ff ff ff 60 01 0b 00 38 18 0d 81    ??......`??.8???
20: 00 00 00 00 df 7e c7 37 06 40 00 00 00 00 02 00    ....?~?7?@....?.
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: cf 00 8c 00 20 00 07 01 8c 00 00 00 00 00 00 00    ?.?. .???.......
80: 01 a1 00 00 00 00 00 00 1f 00 00 00 00 00 60 00    ??......?.....`.
90: 00 00 03 00 38 00 49 00 00 08 00 13 02 1c 11 00    ..?.8.I..?.????.
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

 

w는 2byte(word) 단위

# i2cdump -y 3 0x50 w
     0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
00: 1fc9 001f 5110 0051 0004 0000 0012 0000 
08: 3011 0030 2010 0020 0000 0000 0000 0000 
10: 0203 0002 0000 0000 00ff 00ff 00ff 00ff 
18: 0060 0001 000b 0000 0038 0018 000d 0081 
20: 0000 0000 0000 0000 7edf 007e 37c7 0037 
28: 0006 0040 0000 0000 0000 0000 0002 0000 
30: 0000 0000 0000 0000 0000 0000 0000 0000 
38: 0000 0000 0000 0000 0000 0000 0000 0000 
40: 0000 0000 0000 0000 0000 0000 0000 0000 
48: 0000 0000 0000 0000 0000 0000 0000 0000 
50: 0000 0000 0000 0000 0000 0000 0000 0000 
58: 0000 0000 0000 0000 0000 0000 0000 0000 
60: 0000 0000 0000 0000 0000 0000 0000 0000 
68: 0000 0000 0000 0000 0000 0000 0000 0000 
70: 00ce 0000 008c 0000 0020 0000 0107 0001 
78: 008c 0000 0000 0000 0000 0000 0000 0000 
80: a101 00a1 0000 0000 0000 0000 0000 0000 
88: 001f 0000 0000 0000 0000 0000 0060 0000 
90: 0000 0000 0003 0000 0038 0000 0049 0000 
98: 0000 0008 0000 0013 0002 001c 0011 0000 
a0: 0000 0000 0000 0000 0000 0000 0000 0000 
a8: 0000 0000 0000 0000 0000 0000 0000 0000 
b0: 0000 0000 0000 0000 0000 0000 0000 0000 
b8: 0000 0000 0000 0000 0000 0000 0000 0000 
c0: 0000 0000 0000 0000 0000 0000 0000 0000 
c8: 0000 0000 0000 0000 0000 0000 0000 0000 
d0: 0000 0000 0000 0000 0000 0000 0000 0000 
d8: 0000 0000 0000 0000 0000 0000 0000 0000 
e0: 0000 0000 0000 0000 0000 0000 0000 0000 
e8: 0000 0000 0000 0000 0000 0000 0000 0000 
f0: 0000 0000 0000 0000 0000 0000 0000 0000 
f8: 0000 0000 0000 0000 0000 0000 0000 0000

[링크 : https://m.blog.naver.com/emperonics/221836125173]

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

linux i2c 예제  (0) 2022.12.27
i2c 자료  (0) 2018.04.26
i2c mode - tm4c  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
Posted by 구차니
embeded/Cortex-M3 STM2024. 11. 4. 22:48

왜 안되나 했더니.. 다른 칩에서 계속 pull down 하고 있어서 버튼을 눌러도 올라가지 않았던...

 

cubeide 에서 특정 핀을 GPIO_EXT로 설정하고

 

External Interrupt Mode with ... 로 시작하는 녀석을 고른다.

필요하다면 falling edge 혹은 rising edge에서만도 잡을 수 있는데

 

둘 다 해두면 어떤 이벤트에서 인터럽트가 발생하는지 모르니, 결국에는 인터럽트 핸들러에서

해당 핀의 상태를 읽어서  판별을 해야하나? 조금 복잡한 문제가 발생할 듯 하다.

[링크 : https://blog.naver.com/micomcore/223281042436?]

 

그리고 NVIC 탭에서 해당 인터럽트를 활성화 해준다.

 

아래의 _weak 함수를 재정의 해서 사용하면 끝

GPIO_Pin은 핀 번호 별로 올라오니, 다른 포트의 같은 핀은 구분이 되지 않으니 유의

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  printf("GPIO_Pin[%d]\n", GPIO_Pin);
}

'embeded > Cortex-M3 STM' 카테고리의 다른 글

STM32 timer 사용하기  (0) 2024.12.13
STM32 PWM 으로 LED 점진적으로 깜박이기  (0) 2024.12.13
stm32f103 adc + dma  (0) 2024.11.04
stm32 adc 읽기(1개로 여러 개 채널)  (0) 2024.10.30
stm32 tim output compare(OC) mode  (0) 2024.07.12
Posted by 구차니