:::: MENU ::::
Browsing posts in: Open Source Hardware

ESP 빌드시 문제 해결

ESP32 가 빌드는 되는데 flashing이 다음과 같은 에러메시지로 안되는 경우

Traceback (most recent call last):
File “esptool.py”, line 57, in <module>
File “/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py”, line 389, in load_module
File “serial/tools/list_ports.py”, line 29, in <module>
File “/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py”, line 389, in load_module
File “serial/tools/list_ports_posix.py”, line 31, in <module>
File “/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py”, line 389, in load_module
File “serial/tools/list_ports_osx.py”, line 32, in <module>
ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found
Failed to execute script esptool

기존 esptool을 esptool.py로 다음과 같이 변경을 하면 해결이 된다.

copy /Users/XXXXX/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/tools/esptool.py
to /Users/XXXXX/Library/Arduino15/packages/esp32/tools/esptool_py/2.6.1/esptool.py

chmod +x esptool.py

그리고 /Users/XXXXX/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/platform.txt 파일을 열어서 다음과 같이 수정한다.
tools.esptool_py.cmd=esptool -> tools.esptool_py.cmd=esptool.py

platform.txt 파일을 수정하고 Arduino를 재시작


OSHW 현황 2021

미국의 OSHW협회에서 발간한 THE STATE OF OPEN SOURCE HARDWARE 2021. – https://stateofoshw.oshwa.org/

  • OSHW가 여러 분야의 프로젝트에 사용
  • 인증은 2020년에 큰 폭으로 성장
  • 국가별 그래프: 미국이 주도하고 있고,  한국의 경우 내가 2019년에 진행한 3D 프린터가 유일함.
  • Adafruit과 Sparkfun이 주도
  • 처음 설립을 주도한 사람들이 여성이라서 그런지, 써밋의 스피커에 대한 표(Women, Non-White)도 이쪽의 분위기를 알 수 있다.

PlatformIO, Arduino에서의 핀매핑 정보

펌웨어 개발을 할때 MCU의 I/O핀을 맵핑해서 사용을 하게 된다. 아두이노의 경우에는 실제 HW 핀 매핑을 MCU 벤더에서 제공하는 것 처럼 low level로 access하지 않고, 보드의 실크에 적혀있는 핀 번호로 access할 수 있도록 추상화를 해 놓았다. 실제로 핀 매핑이 어떻게 되는지 보려면 맥의 경우 $HOME/라이브러리/Arduino15/packages 아래에 각 플랫폼 별로 되어 있는 폴더를 확인해 봐야 한다. 예를 들면 adafruit의 경우 /packages/adafruit/hardware/nrf52/0.21.0/variants/feather_nrf52840_express/variant.h파일과 variant.cpp 파일을 확인해 보면 된다.

PlatformIO도 아두이노와 마찬가지로 VSCode에 설치를 하면 맥에서는 $HOME/.platformio/packages 폴더 아래에 각각의 프레임워크에서 사용하는 bootloader, library들이 설치가 되어 있다.


전력소모를 줄이는 법 – Low Power System

배터리를 사용하는 제품은 필수적으로 전력소모를 줄여야 한다. 시스템에서 전력소모를 줄이기 위한 방법은 다음과 같다.

  • MCU의 동작 전압을 낮추고, 동작 Clock를 낮출 것
  • 리니어 레귤레이터 대신 스위칭 레귤레이터를 사용할 것
  • MCU내의 사용하지 않는 peripheral을 disable할 것: Timer, BOD, Watch Dog Timer, UART, ADC 등 특히 ADC나 UART
  • 전류를 센싱하는 저항이 있다면 이 저항의 크기를 높일 것
  • 코드에서 최대한 Sleep 모드를 사용할 것

참고로 Attiny45의 경우 어떤 응용에서 동작시 1.6mA정도까지 줄여봤다. 그리고 이런 문서도 참고하면 좋을 듯.


무게센서와 HX711 사용하기

무게센서

일반적으로 무게센서는 스트레인게이지(Strain Gauge) 기반의 로드셀(Lode Cell)를 사용한다. 스트레인 게이지는 저항으로 이루어진 센서로서 피 측정물에 부착되어 피 측정물의 물리적인 변형률(Strain)을 휘스톤 브릿지 방식으로 전기적인 신호로 바꾸어 측정물의 변형량을 측정하는 저항 센서이다.

  • Excitation+ (E+) or VCC is red
  • Excitation- (E-) or ground is black.
  • Output+ (O+), Signal+ (S+)+ or Amplifier+ (A+) is white
  • O-, S-, or A- is green or blue

HX711

참고


아두이노에서 WebUSB 사용하기

구글 크롬 65버전 이상일 경우 WebUSB를 지원한다.

Micro:Bit

Micro:bit의 경우 웹에서 MakeCode같은 프로그램으로 코딩을 하고 hex 파일을 다운로드 후 외장 디스크로 연결된 디바이스에 drag & drop를 해서 프로그래밍을 했는데, 이제는 웹브라우저에서 바로 USB를 통해 프로그래밍이 가능하다.

Arduino

아두이노의 경우 다음과 같이 작업을 한다.

  • 아두이노는 1.6.11 이상 버전 사용
  • Contents/Java/hardware/arduino/avr/cores/arduino/USBCore.h 파일의 #define USB_VERSION 0x200를 0x210 로 수정
  • https://github.com/webusb/arduino 이 repo의 WebUSB폴더를 아두이노 라이브러리에 copy
  • 예제 프로그램으로 동작 확인
  • 현재 지원되는 보드
    • Arduino Leonardo
    • Arduino/Genuino Micro
    • Arduino/Genuino Zero
    • Arduino MKR1000
    • Arduino MKRZero
    • Arduino MKRFox1200
    • Adafruit Feather 32u4

참고

https://www.hackster.io/FreeGroup/arduino-webusb-circuit-simulator-fun-9c841a

 


임베디드 시스템 개발 방법의 변화

아두이노가 기존의 전통적인 하드웨어 개발을 바꾸어 놓았고, 이후에 Raspberry Pi와 저가의 ESP8266가 오픈소스하드웨어 시장의 3축으로 자리를 잡았다. 최근의 추세는 Adafruit의 제품이 이 시장을 주도하고 있는 느낌이다.

Feather 보드의 폼펙터가 디펙토스텐다드화되고 있으며, Javascript를 사용하는 Espruino, Python을 사용하는 CircuitPython 보드처럼 스크립트 프로그래밍 언어가 임베디드 개발에 사용되고 있다. 이런 보드들은 스트립트 언어를 사용하기 때문에 개발툴을 따로 설치할 필요가 없고, 보드를 컴퓨터의 USB 포트연결하면 외장 메모리도 잡히므로 파일하나만 수정해서 copy해서 넣으면 동작을 한다.

참고 자료



AVR Studio 4에서 Atmel Studio 7에서 마이그레이션

AVR Studio 4에서는 AVRISP mkII의 윈도우즈 USB 디바이스 드라이버가 Jungo 드라이버로 장치관리자의 Jungo아래 WinDriver와 함께 설치가 된다. 하지만 Atmel Studio 7이 설치가 되면 이것이 삭제가 되면서 Atmel아래 AVRISP mkII가 생기면서 더이상 AVR Studio 4에서는 AVRISP mkII는 잡히지 않는다

문제는 Atmel Studio 7에서 오래전에 구매한 AVRISP mkII를 연결을 하니, firmware를 업데이트 하라고 나온다.

하지만 정품 툴이 아니라서 업데이트가 되지 않는다. 이것을 해결하려면 Tools > Options > Tool Settings >Check Firmware의 항목을 False로 하면 진행이 된다.

참고로 만약 지워진 AVR Studio 4의 Jungo 드라이버만 다시 설치를 하려면, C:\Program Files (x86)\Atmel\AVR Jungo USB\usb64 폴더에서 관리자 계정으로 커멘드 창에서 다음과 같은 명령으로 드라이버 설치가 가능하다.

wdreg -inf windrvr6.inf install

참고https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/open-source-hardware

AVR Studio 4 다운로드


벽돌된 Arduino Pro Micro 살리기

Sparkfun사의 Arduino Pro Micro는 ATmega32U4를 사용하고 USB CDC기능이 있다. 문제는 이 보드를 잘못 프로그래밍하면, 즉 아두이노에서 디바이스 선택을 잘못하거나, 5V 디바이스(16Mhz)인데 3.3V 디바이스(8Mhz)로 선택을 해서 프로그래밍을 하면 USB CDC포트가 사라져서 더 이상 프로그래밍을 할 수 없다.

해결 방법

Serial 포트를 연결해서 전원을 공급하고 보드의 RST와 GND를 연결했다 떼면, PC에서 시리얼 포트가 잡힌다. 이때 아두이노에서 제대로 된 세팅으로 다시 프로그래밍을 하면 된다.