페이지

2021년 4월 22일 목요일

STM32L053 내부 eeprom 읽고 쓰기

unsinged long serial;

serial = 12345678;


Write 하기 전 unlock하고, 쓰고, 다시 lock 한다.

HAL_FLASHEx_DATAEEPROM_Unlock();

HAL_FLASHEx_DATAEEPROM_Program(TYPEPROGRAMDATA_WORD, 0x08080010, serial);

HAL_FLASHEx_DATAEEPROM_Lock();


Read 할 땐, 그냥 주소를 읽는다.

serial = *( uint32_t*) 0x08080010;


2019년 5월 9일 목요일

Arduino IDE 에서 ESP8266 설치하기

ESP32 와 동일한 방법인데, 보드매니저 URL만 다르다.


1. Arduino IDE 최신 버전을 설치한다.

2. Arduino를 실행하고, 파일>환경설정 메뉴를 선택하여, 환경설정 창을 연다.

3. 아래쪽 '추가적인 보드 매니저 URLs' 항목에 아래 주소를 입력한다.
   콤마로 구분해서 여러개의 URL을 입력 할 수 있다.

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

4. 환경설정 창을 닫고, 메뉴에서 "툴>보드>보드매니저" 를 선택한다.

5. "esp8266"으로 검색을 하고, 설치를 클릭해서 설치한다.

2018년 12월 19일 수요일

Arduino IDE 에서 ESP32 설치하기

espressif GitHub에 arduino-esp32를 설치하는 방법이 있습니다.

https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

1. Arduino IDE 1.8 이상을 설치한다.
 - 메뉴에서 "파일>환경설정" 선택.


2. 추가적인 보드 매니저 URLs에 아래 내용을 입력하고 확인을 클릭한다.

https://dl.espressif.com/dl/package_esp32_index.json


3. 메뉴에서 "툴>보드>보드매니저" 를 선택한다.


4. "esp32"로 검색을 하고, 설치를 클릭해서 설치한다.
   (설치 버튼이 보이지 않을 때, 조금 기다리면 나타납니다.)


5. 아래와 같이 INSTALL 된 것을 확인한다.


6. "툴>보드" 에서 가지고 있는 esp32 보드를 선택한다.

7. 프로그램을 작성하고, 실행해 본다.

 - 끝 -

2018년 12월 17일 월요일

ESP32 에서 Python 사용하기

MicroPython이라는게 있더군요.

ESP8266, ESP32, STM32 Board(Discovery, Nucleo) 등의 보드에 올려서 사용하는,
Python이 내장된 펌웨어 입니다.

http://micropython.org 에서 보드에 맞는 펌웨어를 다운 받을 수 있습니다.

MicroPython을 소개 해주신 분께서 ESP32-EVB(olimex) 보드도 주시고, 설치방법도 상세하게 알려주셨습니다.
1. 준비물
 - ESP32 Board(ESP32-EVB), micro USB Cable
 - USB Driver : https://www.olimex.com/Products/IoT/ESP32/ESP32-EVB/open-source-hardware
 - Flash Download Tools : https://www.espressif.com/en/esp-wroom-32/resources
 - MicroPython Firmware : http://micropython.org/download
 - uPyCraft : https://github.com/DFRobot/uPyCraft

2. USB Driver를 설치하고, PC와 ESP32-EVB를 연결합니다.

3. 다운받은 flash_download_tools_v3.6.5.exe를 실행합니다.



3. 위 화면에서 ESP32 DownloadTool을 클릭합니다.
 - micropython 펌웨어를 선택하고, 주소는 0x1000, 체크박스를 체크합니다.
 - serial port를 맞춰주고, 
 - ERASE 클릭하여 Flash를 지운다음, START를 클릭합니다.


4. 아래와 같이 정상적으로 FINISH 되었는지 확인합니다.



5. Flash Download Tool을 종료하고, uPyCraft를 실행합니다.
 - 폰트 설치, 업데이트 등 메시지창은 Cancel 합니다.
 - serial port 선택하면 자동으로 연결됩니다.
 - 화면 오른쪽에서 위에서 6번째 아이콘, 끊어진 모양일 때가 연결된 상태 입니다.


6. 코드를 작성하고, DownloadAndRun(F5) 하시면 실행이 됩니다.
 - Download한 파일은 device에 저장이되며, main.py로 저장하면 Power On 시 자동으로 실행이 됩니다.


2018년 7월 17일 화요일

온습도센서(ETH-01S)를 아두이노와 Nucleo-L053(STM32L053) 에서 사용하기

ETH-01S는 에코나래(www.econarae.co.kr)의 온습도 센서이며, I2C Interface를 사용한다.


1. 아두이노에서 ETH-01S를 사용하는 방법.
에코나래 홈페이지로 가면, 네이버 블로그 링크가 있다. 블로그로 가면 아두이노 예제가 있다.

#include <Wire.h>

void setup()
{
  Wire.begin();
}

void loop()
{
  Wire.beginTransmission(0x44);
  Wire.endTransmission();

  delay(1000);

  Wire.requestFrom(0x44,4);

  if(Wire.available())
  {
    int HumidH = Wire.read();
    int HumidL = Wire.read();
    int TemperH = Wire.read();
    int TemperL = Wire.read();

    HumidH = HumidH & 0x3F; // Don't care bit mask

    double RealH = (double)((HumidH * 256 ) + HumidL ) * 100/16383;
    double RealT = (double)(((TemperH * 256) + TemperL)/4) * 165/16383 - 40;
  }

}

2. NUCLEO-L053R8(STM32L053R8T6) 에서 사용하기.

STM32CubeMX에서 NUCLEO-L053R8 보드를 선택하고, I2C1을 Enable 시킨다.
I2C1 설정에서  PB6(SCL), PB7(SDA) Pin에 pull-up으로 설정한다.

Toolchain/IDE를  Keil uVision5로 설정하였다.

아두이노에서는 ETH-01S의 I2C address가 0x44인데, STM32에서는 read/write bit를 포함해서 주소로 쓰기 때문에, I2C address가 0x88이 된다.

float H_result, T_result;
int  HumidH, HumidL, TemperH, TemperL;
uint8_t  pBuffer[4];

pBuffer[0] = 0x0;
HAL_I2C_Master_Transmit(&hi2c2, 0x88, pBuffer, 1, 100);  // 초기화

HAL_I2C_Master_Receive(&hi2c2, 0x88, pBuffer, 4, 100);  // 측정값 읽기
HAL_Delay(5);

memcpy(&HumidH ,&pBuffer[0],1);
memcpy(&HumidL ,&pBuffer[1],1);
memcpy(&TemperH ,&pBuffer[2],1);
memcpy(&TemperL ,&pBuffer[3],1);

H_result = (double)(((HumidH&0x3F) * 256 ) + HumidL ) * 100/16383;
T_result = (double)(((TemperH * 256) + (TemperL&0xFC))/4) * 165/16383 - 40;




2018년 4월 3일 화요일

samba 설치 방법 ( Ubuntu desktop 16.04.4 LTS )

Ubuntu Desktop 이지만 터미널로 로그인해서 설치했다.

1. samba 설치

$sudo apt-get install samba

2. 유저 등록

$sudo smbpasswd -a liva

3. /etc/samba/smb.conf 수정

smb.conf 내용 중에 [profile] 항목을 복사해서, 제일 아래쪽에 추가한다.

;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

코멘트를 풀어주고, 유저명, 폴더 경로, 검색가능, 쓰기가능, 권한 등을 설정한다.

[liva]
   comment = Users profiles
   path = /home/liva
   guest ok = no
   browseable = yes
   read only = no
   create mask = 0664
   directory mask = 0775

4. samba 재시작

$ sudo /etc/init.d/smbd restart

5. 윈도우에서 접속

탐색기에서 우분투 주소(\\192.168.0.4)를 입력하면 로그인 창이 뜨고, 유저명과 등록한 암호를 입력하면 된다.


2018년 2월 7일 수요일

SMD Marking

SMD Tr Marking Code

MMBT3904(SOT23) : K1N(DIODES), 1AM(ON Semi), 7A*(NXP), s1A(infineon)
MMBT3906(SOT23) : K3N(DIODES), 2AM(ON Semi), 7B*(NXP), 12A, 2A(Fairchild)

KRC101S(SOT23) : NA(KEC)
KRC102S(SOT23) : NB(KEC)
KRC103S(SOT23) : NC(KEC)
KRC104S(SOT23) : ND(KEC)
KRC105S(SOT23) : NE(KEC)
KRC106S(SOT23) : NF(KEC)

1P : LMBT2222ALT1G, SOT-23, LRC(LESHAN RADIO COMPANY, LTD)
2F : MMBT2907A, SOT-23, FAIRCHILD


2018년 2월 1일 목요일

ESP32 + arduino IDE

arduino IDE를 이용한 ESP32 프로그램 개발 환경을 만들어 봅니다.


1. Arduino IDE 설치

https://www.arduino.cc 를 방문해서, Arduino IDE를 다운 받은 후  설치합니다.

기본 설정은 C:\Program Files (x86)\Arduino\ 에 설치되는데, 이 폴더는 접근할 때, 관리자 권한이 필요해서, 좀 불편합니다.

그래서, D:\Arduino\ 에 설치합니다.

2. arduino-esp32 설치

https://github.com/espressif/arduino-esp32 에서 arduino-esp32-master.zip을 다운 받습니다.

아두이노 설치된, D:\Arduino\hardware\ 폴더에 espressif 폴더를 새로 만들어서 압축을 풀어 놓습니다.

폴더 명을 arduino-esp-master 에서 esp32로 바꾸었습니다.



D:\Arduino\hardware\espressif\esp32\tools\ 폴더안에 get.exe 를, 관리자 권한으로 실행합니다.


3. Arduino IDE 실행 및 보드 선택

아래 그림과 같이 ESP32 보드가 추가되었습니다.

제가 가지고 있는 보드는 알리익스프레스에서 구매한 WEMOS LOLIN32 Lite 인데, Lite는 리스트에 없기에 그냥 LOLIN32를 선택했습니다. 동작은 잘 됩니다.


Upload Speed는 115200으로 바꿔 줍니다.

4. 프로그래밍

파일>예제> WEMOS LOLIN32의 예제> 에서 적당한 예제를 골라 업로드 해보시기 바랍니다.

업로드 하는데 시간이 좀 걸리는군요.


2017년 10월 23일 월요일

Bluno Beetle HID connection으로 변경하기

App Inventor로 Bluno Beetle 앱을 만들어 볼려고, 휴대폰으로 Bluno Beetle을 페어링하니, 암호를 입력하라고 합니다. 암호 모르는데...

검색을 해보니, Bluno Beetle을 HID Connection 으로 설정해야 페어링할 때, 암호를 묻지 않는다고 합니다.

우선 스케치를 실행해서 시리얼 모니터를 실행합니다.


line ending 없음, 115200 보드레이트로 설정하고, +++를 입력하면...
아래와 같이 AT mode가 됩니다.


AT mode에서는 "line ending" 없음을 "Both NL & CR"로 변경합니다.
"AT+SETTING=DEFAULT" 를 입력하면, 기본값으로 설정됩니다.


"AT+FSM=FSM_HID_USB_COM_BLE_AT"를 입력하면, HID Connection이 설정됩니다.


Firmware Version을 확인하려면, "AT+VERSION=?"을 입력합니다.


"AT+EXIT"를 입력해서 AT mode에서 나옵니다


이제 Bluno Beetle의 전원을 껐다가 다시 켜면, 암호없이 페어링이 됩니다.


AT Command에 대한 상세한 내용은 여기를 참조 하시기 바랍니다.


2017년 9월 27일 수요일

EWARM 설치하다가 하루가 가버린 이야기

STM32L053을 계속 써오다가, STM32F429를 사용할려고
Keil uVision5로 컴파일 하려니 지원하지 않는다는 메시지가 나온다.

이것저것 해도, 안된다. 그러다가, 문득 uVision5 Free version이 STM32L Series만 지원한다고 했던게 생각이 났다.

그래서, EWARM 8.11을 사용하려고 다운을 받았다.
EWARM은 한달간 무료, 또는 32kB 사이즈 제한이 있는 Free, 두가지 라이센스로 사용 할 수 있다.

그런데, 다운받은 EWARM-CD-8113-13984.exe 가 실행이 안된다. 관리자 권한으로 실행해도 안되고, PC를 껐다 켜고, 바이러스 백신도 중지시켜보고, 다른 PC에서 다운받아서 copy해서 해보고.....

그러다가, 압축을 풀어서 하면 되지 않을까 해서 (실행 압축프로그램이니까), 반디집으로 열기 해서 압축을 풀고, 안에 있는 autorun.exe. 를 실행하니...
드디어 설치화면이 뜨고, 설치가 된다.

하루가 다 지나가 버렸네.


p.s. 32kB 제한 라이센스로 했더니, lwIP 예제가 컴파일이 안된다. 다시 30일 제한 라이센스를 설치하니 잘 되는군. -_-;;

2017년 2월 13일 월요일

우분투(Ubuntu) 고정 ip 설정

1. 사용하려는 ip를 다른 시스템이 쓰고 있는지 확인한다.
 - 공유기에 접속해서 내부네트워크 정보를 보면, 사용하고 있는 ip 목록이 나온다.

2. 우분투에 root 계정으로 로그인 한다.

3. "ifconfig" 명령으로 현재 상태를 확인한다.

enp2s0    Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
             inet addr:192.168.10.42  Bcast:192.168.10.255  Mask:255.255.255.0
             inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
             RX packets:3167 errors:0 dropped:0 overruns:0 frame:0
             TX packets:609 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:1000
             RX bytes:301289 (301.2 KB)  TX bytes:108196 (108.1 KB)

lo          Link encap:Local Loopback
            inet addr:127.0.0.1  Mask:255.0.0.0
            inet6 addr: ::1/128 Scope:Host
            UP LOOPBACK RUNNING  MTU:65536  Metric:1
            RX packets:173 errors:0 dropped:0 overruns:0 frame:0
            TX packets:173 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1
            RX bytes:12609 (12.6 KB)  TX bytes:12609 (12.6 KB)

4. "nslookup", "server" 명령으로 DNS 도 확인한다.

$ nslookup
> server
Default server: 210.xxx.xxx.xxx
Address: 210.220.163.82#53
Default server: 219.xxx.xxx.xxx
Address: 219.250.36.130#53
> exit

5. "/etc/network/" 에 있는 interfaces 파일을 수정한다.

auto enp2s0
iface enp2s0 inet dhcp

위와 같이 되어 있는 부분을 아래와 같이 변경한다.

auto enp2s0
iface enp2s0 inet static
address 192.168.10.100
netmask 255.255.255.0
broadcast 192.168.10.255
gateway 192.168.10.1
network 192.168.10.0
dns-nameservers 210.xxx.xxx.xxx 219.xxx.xxx.xxx

6. reboot 한다.






우분투(Ubuntu) root password 설정

우분투 서버를 설치하고, root 계정으로 접속하려면,

1. 사용자 계정으로 로그인 한다.
2. "sudo passwd root" 명령으로 root계정의 password를 설정한다.
3. "su root" 명령을 입력하고, root 계정으로 로그인 한다.

4. Ctrl-D 또는 "exit" 를 입력하면, root 계정에서 로그아웃 된다.