로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2018/02/16
첨부#1 stm32f103c-ssd1306-test.ino (9KB) (Down:14)
첨부#2 generic_boot20_pc13.zip (12KB) (Down:5)
ㆍ추천: 0  ㆍ조회: 277   
  STM32F103C 기판의 SSD1306 OLED 구동
STM32F103C ARM32 비트 M3 계열 개발기판으로 128x64 SSD1306 OLED를 구동한다.

UNO에서 OLED SSD1306을 많이 사용하고 있지만, STM32 ARM 기판도 잘 되지는지 궁금했다.
Bootloader를 개조한 ARM 기판과 아두이노 IDE의 STM32F1XX  컴파일러가 작동하는지 점검한다.

 
 STM32 기판은 가장 저렴한 Blue-Pill을 구입했다 (국내 5,600원)
 
 
이 기판은 가격이 저렴하지만, 몇가지 수정해야 한다.
1. 밑면의 저항 R10을 103 (10K)에서 152 (1.5K)로 교체한다
2. 아니면 A12 핀에 1.8K 저항을 3.3V로 연결해도 된다.

3. Bootloader를 maple-mini 2.0 pc13 으로 개조한다. (첨부파일 #2)
개조방법은 j-Link (USD 5.60)와 JFlash.exe로 펌웨어를 굽는다.
우측의 4핀 백색 커넥터를 개발기판(위쪽 사진)의 좌측 4핀과 연결한다. (이전 글인 부트로더 개조방법 참조) 
  

4. 아두이노 IDE의 보드관리에서 ARM32 DUE와 STM32F1XX 보드를 추가해야 한다.
ARM32 DUE 보드의 추가는 32비트 ARM post compiler가 추가되고 ARM Core 컴파일이 된다,
STM32F1XX 보드의 추가는 STM32F103C등 F1XX CPU를 사용하는 보드들의 hardware가 추가된다.
 

5. 모든 변경을 끝내고 USB 포트에 STM32F103C 기판의 USB를 PC에 직접 연결하면,
Windows에서 DFU 드라이버가 자동으로 설치된다. <- 개조 및 설치 끝. 
 

 OLED 연결 시험
aliexpress.com에서 128x64 SSD1306 OLED 모듈을 구입했다. (10개 USD 26.00 배송료 무료)
 

 
 OLED와 STM32 기판을 빵판에 꼽고 점퍼로 다음과 같이 연결한다. (아래 사진 참조)
OLED 1번 GND(GND) --- STM32 GND 접지선에 연결한다 
OLED 2번 VCC(VDD) --- STM32 3.3V 전원에 연결한다
OLED 3번 DO(SCK) --- STM32  PB13 =Serial colock
OLED 3번 DI(SDI)  --- STM32  PB13  =Serial data
OLED 5번 RES(RST) --- STM32 3.3V 전원에 연결한다

OLED 7번 CS(CS)  --- STM32  PB12 =Chip selector
OLED 8번 DC(DC) --- STM32  PB14 = Data/Command

 
 아두이노의 보드는 Generic STM32F103C로 설정한다. (72MHz RAM20K Flash 60K)
  
 IDE → 툴 → 보드정보열기를 누르면,

다음과 같이 연결된 기판의 펌웨어인 부트로더의 정보가 나와야 한다
 

 Adafruit SSD1306 OLED 예제 파일을 연다. (혹은 첨부파일 #1은 수정된 것임)

IDE → 파일 → 예제 → 사용자 예제 → Adafruit SSD1306  → SSD1306 128x64를 선택하면 소스가 들어온다.
IDE → 파일 → 새이름으로 저장을 눌러 내 파일로 저장한다.

 128x64 SSD1306 OLED 모듈의 회로도
전원 2개와 1개의 RESET 그리고 4개의 신호선이 있는데, RESET를 전원에 연결하면 4선이 제어용이다.
아래 소스 수정에서 #define의 hardware 정의와 같이, RESET는 전원에 연결하고, 4개는 포트에 연결한다.
 

 Adafruit SSD1306 그래픽 소스는 다음과 같이 수정한다.
#include <Adafruit_SSD1306_STM32.h> 바로 위에 청색 코드를 추가한다
 
적색과 같은 내용의 코드를 찾아서 //로 막는다. 지워도 된다.
// #define OLED_RESET 4
//Adafruit_SSD1306 display(OLED_RESET);


그 아래에 다음 청색 코드를 추가한다
#define OLED_SCK  PB13  // SCK
#define OLED_SDI  PB15  // MOSI
#define OLED_RST  255   // VCC
#define OLED_CS   PB12  // CS
#define OLED_DC   PB14  // DC

  
#include <Adafruit_SSD1306_STM32.h>
Adafruit_SSD1306 display(OLED_SDI, OLED_SCK, OLED_DC, OLED_RST,OLED_CS);

 
추가한 다음의 아래의 모든 소스는 그대로 둔다.
#include <Adafruit_GFX.h>

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

 
 Arduino STM32의 Adafruit_SSD1306_STM32.h을 수정한다.
C:\Documents\문서\Arduino\hardware\를 찾는다. 이전에 추가한 STM32 폴더가 있어야 한다.
추가한 폴더 Arduino_STM32-master\STM32F1\libraries\Adafruit_SSD1306\를 연다.
 
Adafruit_SSD1306_STM32.h를 찾아서 메모장이나 편집기로 다음 내용을 찾아서 수정한다
#define SSD1306_128_64 가 앞부분에 //가 없으면 된다. 다음과 같이 만들고 저장한다.
/--------------------------------------------------------------------------*/ 
#define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16
/*=========================================================================*/

 
 IDE에서 → 스케치 →  컴파일/확인 →을 누르고 이상이 없으면,  → 스케치 → Upload한다.
펌웨어 굽기(upload)가 완료되고 이상이 없으면, SSD1306 OLED에 그래픽이 표시된다.
 

그림이 천천히 움직이는 것은 CPU가 느린게 아니고, 소스코드에 지연시간이 들어있기 때문이다.
OLED의 그래픽 작동이 잘 된다면, 이제 부터는 소스코드를 수정하여 자신의 코드로 만들면 된다.
 
소스에서  setup() 안의 test_ssd1306();를 //로 막으면 그래픽 데모가 중지된다.
주함수 loop() 함수 아래의 보조함수(subroutine)들은 모두 그래픽 데모용이다.
어떻게 그래픽을 만드는지 확인하고 나서, 필요 없다면 나중에 지워도 된다.
주함수인 loop()는 비어있다. 여기에 자신이 만드려는 소스를 넣는다. 

첨부 파일  #1 : STM32F103C-SSD1306-Test.ino
첨부 파일 #2 : generic_boot20_pc13.bin (STM32F103C8 기판의 부트로더 개조용)

 이 펌웨어 소스를 응용한 장치의 개발이나, 주문형 펌웨어가 들어간 모듈 주문 받습니다.
 이자료의 무단 복제 및 무단 배포를 금지합니다.
이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.

 AVRTOOLS™

   
윗글 STM32F103C 기판의 1~8CH ADC DMA 전송
아래글 STM32F103C ARM32 기판의 독립 IDE 소개
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 517 0
41 STM32F103C 12비트 정현파 DDS V2 avrtools™ 2018/03/08 (목) 200 0
40 STM32F103C ILI9341 TFTLCD Scope V2 avrtools™ 2018/03/05 (월) 256 0
39 STM32F103C 32비트 ARM-CPU 2채널 Scope avrtools™ 2018/02/25 (일) 232 0
38 STM32F103C의 ILI9341 ILI9163 TFT-LCD 연결방법 avrtools™ 2018/02/19 (월) 230 0
37 STM32F103C+MCP4725 DDS 1KHz 정현파 발생기 avrtools™ 2018/02/18 (일) 257 0
36 STM32F103C 기판의 1~8CH ADC DMA 전송 avrtools™ 2018/02/17 (토) 279 0
35 STM32F103C 기판의 SSD1306 OLED 구동 avrtools™ 2018/02/16 (금) 277 0
34 STM32F103C ARM32 기판의 독립 IDE 소개 avrtools™ 2018/02/14 (수) 310 0
33 STM32F103C ARM32 기판의 Bootloader 개조 avrtools™ 2018/02/14 (수) 312 0
32 ESP32+OLED 기판과 PWM generator avrtools™ 2018/02/11 (일) 225 0
31 Wemos-Lolin32 Audio FFT Analyzer 제작 avrtools™ 2018/02/07 (수) 236 0
30 DUE SAM3X8E Audio FFT Analyzer 제작 avrtools™ 2018/01/30 (화) 246 0
29 AD5933 LCR-Impedance Analyzer 제작 avrtools™ 2012/03/17 (토) 781 0
28 ESP-01 펌웨어 업그레이드와 WiFi 2 Relay Control avrtools™ 2017/12/24 (일) 217 0
27 ESP12E-devKit로 만드는 WiFi 4 Relay 제어장치 avrtools™ 2017/12/23 (토) 243 0
26 M328-mini로 만드는 Touch 용량검출센서 avrtools™ 2017/12/19 (화) 230 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 751 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 975 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 805 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 762 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 769 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 841 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 632 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 1056 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 1025 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 575 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 720 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 1185 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 710 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 620 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 1258 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 766 0
9 Arduino DUE Pezo-SPeaker LCQ Meter 소스 avrtools™ 2016/01/24 (일) 481 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 784 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1947 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2919 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2424 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 810 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 759 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 4068 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2955 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0