:::: MENU ::::
Browsing posts in: Arduino

전력소모를 줄이는 법 – 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

 



벽돌된 Arduino Pro Micro 살리기

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

해결 방법

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


Mac OS에서 ESP8266 개발 환경

아두이노

1. Arduino > Preferences… 의 메뉴에서 추가적인 보드매니저 URLs에 다음의 링크를 입력한다.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

2. 툴 > 보드 > 보드 매니저… 의 메뉴의 필터에 ESP를 입력 후 esp8266을 선택후 설치한다.

Sming

맥에서는 https://github.com/SmingHub/Sming/wiki/MacOS-Quickstart 이 링크의 내용대로 따라하면 별 무리가 없다. 즉 이클립스, 툴체인, ESP SDK를 설치하고 Sming core를 빌드한다.

이클립스의 환경설정에서 SMING_HOME, ESP_HOME 설정을 한다.

 

SmingFramework의 Makefile-project.mk파일에서 ESPTOOL2의 경로를 다음과 같이 수정한다.

ESPTOOL2 ?= /opt/esp-open-sdk/utils/esptool2

Makefile-macos.mk파일에서 ESPTOOL의 경로를 다음과 같이 수정하고, COM_PORT항목도 환경에 맞게 수정한다.

ESPTOOL ?= $(ESP_HOME)/utils/esptool.py

Basic_Blink 프로젝트의 Makefile-user.mk파일도 다음과 같이 수정한다.

# Local build configuration

## Parameters configured here will override default and ENV values.

## Uncomment and change examples:

## Add your source directories here separated by space

MODULES = app

EXTRA_INCDIR = include

## ESP_HOME sets the path where ESP tools and SDK are located.

## Windows:

# ESP_HOME = c:/Espressif

## MacOS / Linux:

ESP_HOME = /opt/esp-open-sdk

## SMING_HOME sets the path where Sming framework is located.

## Windows:

# SMING_HOME = c:/tools/sming/Sming

## MacOS / Linux

SMING_HOME = /opt/sming/Sming

## COM port parameter is reqruied to flash firmware correctly.

## Windows:

# COM_PORT = COM3

## MacOS / Linux:

COM_PORT = /dev/tty.usbserial-A50285BI

## Com port speed

COM_SPEED= 115200

## Configure flash parameters (for ESP12-E and other new boards):

SPI_MODE = dio

## SPIFFS options

#DISABLE_SPIFFS = 1

SPIFF_FILES = files

Sming 프레임워크 소스코드를 불러와서 라이브러리를 빌드

  • Eclipse 실행
  • [File -> Import -> General -> Existing Project into Workspace] 선택
  • [Select root directory] 에서 SmingFramework 프로젝트 폴더를 선택
  • 프로젝트에서 Build

Blink 예제 빌드 확인

  • [File -> Import -> General -> Existing Project into Workspace] 선택
  • [Select root directory] Basic_Blink 프로젝트 폴더선택
  • 프로젝트에서 Build

프로젝트 빌드가 성공하면 [프로젝트 폴더\out\firmware] 폴더안에 *.bin 파일들이 생긴다.

참고


아두이노에서 ESP8266 사용하기

아두이노에서 ESP8266 사용하기

  • 아두이노 IDE는 1.6.4 이상의 버전을 설치
  • 아두이노의 환경설정에서 추가적인 보드매니저 URLs에 다음과 같이 입력

http://arduino.esp8266.com/stable/package_esp8266com_index.json

  • 툴 > 보드매니저에서 ESP8266을 검색후 ESP8266 보드를 설치한다.

arduino_board_maneger

  • 설치후 툴 > 보드 메뉴에서 가지고 있는 ESP8266보드를 선택한다.

핀레이아웃

간단한 Blink Test


아두이노의 숨겨진 히스토리

이제껏 몰랐던 아두이노의 숨겨진 이야기 http://arduinohistory.github.io/

이 글의 저자는 Hernando Barragán로 아두이노가 차용한 Wiring을 개발한 사람이다. 이 이야기의 핵심은 자신이 학생으로 있을 때 개발한 wiring을 당시 교수로 있었던 Massimo Banzi가 fork해서 아두이노를 만들었다는 것. 잘못된 정보는 무책임한 미디어에 의해 더 확산이 되고… 암튼 당사자가 주장하는 얘기의 핵심은

It is unethical and a bad example for academics to do something like this with the work of a student. Educators, more than anybody else, should avoid taking advantage of their student’s work.


Make파일을 사용해서 아두이노 스케치 다운로드

아두이노 IDE를 사용하여 스케치를 다운로드를 하면 매번 컴파일을 해서 시간이 걸린다. 따라서  Make파일을 써서 스케치를 다운로드하고 있었는데, UART to USB칩이 Atmega16U2, FTDI에서는 이상이 없었는데, Silab CP2102를 사용하면 다운로드가 안된다. 원인을 찾아보니 Make파일에서 다음과 같이 AVRDUDE_PROGRAMMER를 stk500대신 wiring으로 하니 다운로드가 잘된다.

#AVRDUDE_PROGRAMMER ?= stk500
AVRDUDE_PROGRAMMER ?= wiring

CP2102 드라이버CP2102데이터시트


Teensy 사용하기

Teensy는 아두이노 호환 보드로 Cortex M0, M4기반의 보드가 있어서 보다 높은 프로세싱이 필요한 응용에 적합하다. 이 보드를 사용하기 위해서는 Teensyduino라는 프로그램을 설치해야 하는데, 이것은 기존 아두이노 IDE에 추가적으로 설치되는 코드들과 다운로드를 위한 프로그램이 포함되어 있다.

Teensy_USB_Development_Board_1

Teensy_USB_Development_Board

먼저 아두이노를 설치하고 https://www.pjrc.com/teensy/td_download.html 이 사이트에서 파일을 다운로드해서 설치하는데 문제는 아두이노 1.0과 아두이노 1.6.x 이 동시에 설치가 되어 있으면 아두이노 1.0쪽에만 설치가 된다.(아두이노 1.6.x쪽을 지정이 안됨) 따라서 일단 아두이노 1.0을 언인스톨하고 1.6.x에 설치를 한 후 다시 아두이노 1.0을 설치를 해야 한다. Teensy 3.2의 경우 Cortex M4이기 때문에 SPI를 사용하는 응용은 Teensy 라이브러리에서 SPI 드라이버(faster SPI library for Teensy 3.0)도 같이 설치를 해야한다. 그리고 나머지 필요한 라이브러리는 아두이노 1.6.x의 라이브러리 매니저에서 추가한다.

*코드중에 호환이 안되는 것중 하나 – isDigit ==> isdigit 으로 바뀌어야 함.


Pages:12