Mục lục:

Nhấp nháy chương trình cơ sở tùy chỉnh vào đèn pin BLF A6: 5 bước
Nhấp nháy chương trình cơ sở tùy chỉnh vào đèn pin BLF A6: 5 bước

Video: Nhấp nháy chương trình cơ sở tùy chỉnh vào đèn pin BLF A6: 5 bước

Video: Nhấp nháy chương trình cơ sở tùy chỉnh vào đèn pin BLF A6: 5 bước
Video: Hướng dẫn sử dụng giao diện Anduril 2.0 2024, Tháng mười một
Anonim
Nhấp nháy chương trình cơ sở tùy chỉnh sang đèn pin BLF A6
Nhấp nháy chương trình cơ sở tùy chỉnh sang đèn pin BLF A6

Gần đây tôi có một BLF A6. Nó rất đẹp, nhưng tôi không thích một trong hai nhóm chế độ mặc định, vì vậy tôi đã sửa đổi chương trình cơ sở để sử dụng độ sáng ưa thích của mình. Thông tin rất khó tìm, vì vậy tôi đang đưa mọi thứ tôi học được ở đây cho bản thân và những người khác.

Quân nhu

BLF A6 (nó có thể sẽ hoạt động với các đèn pin ATtiny khác)

Nhíp / kìm mỏng / kéo nhỏ / thứ gì đó để tháo vòng giữ bảng điều khiển

Máy tính để flash với, tốt nhất là chạy bản phân phối Linux

Bộ lập trình USB ASP / Arduino / thứ gì đó có thể lập trình AVR (rõ ràng là bộ lập trình USB ASP được khuyến nghị, nhưng tôi đã sử dụng Arduino)

Clip SOIC8 (có thể làm mà không cần, nhưng nó rất khó sử dụng và hoàn toàn không được khuyến khích)

(tùy chọn) Breadboard và / hoặc dây jumper để kết nối dễ dàng hơn

Bước 1: Tải xuống chương trình cơ sở

Phần mềm cho BLF A6 (và nhiều đèn pin khác) có sẵn tại đây. Tác giả nói về nó ở đây. Bạn có thể tải xuống bằng cách chạy:

nhánh bzr lp: ~ toykeeper / flashlight-firmware / blf-a6-final

trong một thiết bị đầu cuối. (bạn có thể phải cài đặt bzr)

Lưu ý: trong lần chỉnh sửa trước của Sách hướng dẫn này, tôi đã sử dụng "bzr branch lp: flashlight-firmware" để thay thế. Kể từ đó, tôi đã biết rằng điều này tải xuống một phiên bản lỗi thời với các giá trị sai cho tụ điện thời gian tắt, khiến cho việc nhấn nút lâu một cách khó chịu. (nhờ chủ đề này trên Reddit)

Thư mục bạn muốn là blf-a6-final / ToyKeeper / blf-a6. Nó chứa một tệp.hex đã biên dịch sẵn sàng để flash (blf-a6.hex) và mã C mà bạn có thể sửa đổi. (blf-a6.c) Nếu bạn muốn flash firmware stock, bạn có thể bỏ qua bước tiếp theo và chỉ cần sử dụng blf-a6.hex. Một số phần sụn khác trong kho lưu trữ đó có thể cũng sẽ hoạt động.

Bước 2: Sửa đổi chương trình cơ sở

Mở blf-a6.c trong trình soạn thảo văn bản hoặc IDE ưa thích của bạn. Các dòng thú vị nhất là các nhóm chế độ giữa dòng 116 và 131. Chúng trông như thế này:

// Nhóm chế độ 1 # xác định NUM_MODES1 7 // Mức PWM cho mạch lớn (FET hoặc Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Mức PWM cho mạch nhỏ (1x7135) # xác định MODES1x1 2, 20, 110, 255, 255, 255, 0 // Mẫu của tôi: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono sample: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Tốc độ PWM cho từng chế độ # xác định MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Nhóm chế độ 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 NHANH CHÓNG, NHANH CHÓNG, GIAI ĐOẠN

Đối với mỗi nhóm, MODESN là giá trị PWM được sử dụng cho FET và MODES1 là giá trị PWM được sử dụng cho 7135 trong mỗi chế độ. Con số nằm trong khoảng từ 0 đến 255 và tương ứng với độ sáng của đèn. Thông tin thêm tại đây. (cuộn xuống "Quy định chế độ:") Tôi không chắc tốc độ PWM chính xác là bao nhiêu. Nếu ai biết, hãy cho tôi biết trong phần bình luận. FET có thể tạo ra nhiều ánh sáng hơn 7135, nhưng 7135 giữ mức độ ánh sáng ít nhiều như nhau trong suốt thời gian sử dụng của pin, trong khi FET tối hơn khi hết pin.

Tại đây, bạn có thể điều chỉnh các giá trị PWM để tạo ra các chế độ theo ý muốn của mình. Bạn có thể cũng có thể thay đổi số lượng chế độ, nhưng tôi chưa thử vì tôi muốn bốn chế độ, tình cờ là số trong nhóm thứ hai. Tôi muốn có chế độ ánh trăng tối hơn, vì vậy tôi đặt chế độ đầu tiên thành 0/1 và tôi thấy chế độ turbo hơi vô nghĩa, vì vậy tôi đã thay thế nó bằng 137/255, tương đương với chế độ sáu trong nhóm chế độ bảy. Bạn có thể sửa đổi phần còn lại của mã nếu cần, nhưng tôi chưa thử.

Khi bạn có mã bạn muốn, bạn phải biên dịch nó thành tệp.hex. Ít nhất, bạn cần gcc-avr và avr-libc. Nếu bạn gặp sự cố, hãy xem các phần phụ thuộc khác trong readme phần sụn. Kho lưu trữ bao gồm một tập lệnh xây dựng, nhưng tôi không thể làm cho nó hoạt động. Thay vào đó, tôi đã tải xuống phiên bản cũ với

bzr branch lp: flashlight-firmware

và sao chép tập lệnh xây dựng cũ (mà tôi có thể làm việc) qua tập lệnh mới. Sau đó, tôi chạy:

../../bin/build.sh 13 blf-a6

trong thư mục blf-a6. (nên có một cách tốt hơn để làm điều đó)../../bin/build.sh gọi tập lệnh, 13 chỉ định rằng nó đang xây dựng cho ATtiny13 và blf-a6 chỉ định rằng nó cho BLF A6. (duh) Nó sẽ cho bạn biết nó đang chạy lệnh gì và cung cấp cho bạn kết quả đầu ra. Của tôi trông như thế này:

avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I.. -I../.. -I../../.. -fshort -enums -o blf-a6.o -c blf-a6.cavr-gcc -Wall -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o avr-objcopy --set -section-flags =.eeprom = cert, load --change-section-lma.eeprom = 0 --no-change-warning -O ihex blf-a6.elf blf-a6.hex Chương trình: 1022 byte (99,8% đầy đủ) Dữ liệu: 13 byte (đầy 20,3%)

Các lệnh đã được tối ưu hóa cho kích thước, vì vậy nếu nó nói rằng nó đã đầy hơn 100%, hãy thử bình luận

#define FULL_BIKING_STROBE

trên dòng 147 để sử dụng bộ nhấp nháy đi xe đạp tối thiểu nhỏ hơn. Nếu nó vẫn không phù hợp, có thể bạn sẽ phải xóa thêm mã ở đâu đó. Khi biên dịch xong, sẽ có một tệp có tên blf-a6.hex trong thư mục. Đây là mã đã biên dịch của bạn, sẵn sàng để flash.

Bước 3: Tháo rời đèn pin

Tháo rời đèn pin
Tháo rời đèn pin
Tháo rời đèn pin
Tháo rời đèn pin
Tháo rời đèn pin
Tháo rời đèn pin

Vặn đầu bóng đèn ngược chiều kim đồng hồ. Có hai khớp vít ở đây. Đèn pin càng gần cuối bóng đèn sẽ mở ra phản xạ và đèn LED, và đèn gần giữa đèn sẽ mở ra bảng điều khiển. Bạn muốn cái gần giữa hơn.

Bên trong, bạn sẽ thấy lò xo pin và một vòng giữ có hai lỗ trên đó. Nhét nhíp / kìm / kéo mỏng của bạn vào các lỗ và xoay chúng ngược chiều kim đồng hồ. Nó khá cứng và việc sử dụng hai đối tượng riêng biệt có thể sẽ không cung cấp cho bạn đủ đòn bẩy. Tôi đã sử dụng kéo trên một con dao quân đội Thụy Sĩ.

Khi bạn đã lấy chiếc nhẫn ra, hãy giải phóng bảng điều khiển. Nó vẫn được gắn bằng hai sợi dây, vì vậy hãy cẩn thận. Chúng bị xoắn vào nhau, vì vậy hãy xoay bảng theo cách này hay cách khác cho đến khi các dây lỏng ra. Khi bạn đã có đủ thời gian, hãy lật bảng. Bạn muốn nó sao cho chip có "TINY13A" trên đó cao hơn và dễ truy cập hơn. Nếu nó ở phía sai, hãy lật nó theo cách khác. Gài lò xo bên dưới. Điều này sẽ tạm thời giữ nguyên vị trí và giúp lấy chip dễ dàng hơn. Nếu bạn gặp sự cố với điều này, có thể bạn có thể tháo đầu nối kia và tháo hai dây ra khỏi phía bên kia để bạn có thể tháo bo mạch hoàn toàn, nhưng tôi chưa thử.

Bước 4: Kết nối phần cứng nhấp nháy

Kết nối phần cứng nhấp nháy
Kết nối phần cứng nhấp nháy
Kết nối phần cứng nhấp nháy
Kết nối phần cứng nhấp nháy
Kết nối phần cứng nhấp nháy
Kết nối phần cứng nhấp nháy

Bây giờ bạn sử dụng clip SOIC8 để kết nối chip ATtiny13 và lập trình viên của bạn. Với kẹp SOIC8 của tôi, nếu tôi có dây màu đỏ ở bên trái của cả hai đầu, thì hàng chân gần tôi hơn trên đầu kẹp tương ứng với hàng chân gần tôi hơn trên đầu kết nối, khi đầu nối hướng xuống. (xem sơ đồ siêu nghệ thuật của tôi) Hướng dẫn này khuyến nghị bạn sử dụng bộ lập trình USB ASP V2.0. Nếu bạn làm vậy, hãy kết nối nó như thế này:

  • Ghim 1 trên ATtiny13 thành chân 5 trên USB ASP (đặt lại)
  • Chân 4 trên ATtiny13 đến chân 10 trên USB ASP (mặt đất)
  • Ghim 5 trên ATtiny13 thành chân 1 trên USB ASP (MOSI)
  • Chân 6 trên ATtiny13 thành chân 9 trên USB ASP (MISO)
  • Chân 7 trên ATtiny13 thành chân 7 trên USB ASP (SCK)
  • Chân 8 trên ATtiny13 thành chân 2 trên USB ASP (VCC)

Nếu, giống như tôi, bạn đang sử dụng Arduino, bạn phải chuẩn bị nhiều hơn một chút. Thực hiện theo các bước 0 và 2 của hướng dẫn này:

Mở Arduino IDE và đảm bảo rằng Arduino được kết nối với máy tính của bạn. Tìm bản phác thảo ISP trong Tệp> Ví dụ> 11. ArduinoISP> ArduinoISP và tải nó lên Arduino của bạn. Sau đó kết nối ATtiny13 với nó như thế này:

  • Ghim 1 trên ATtiny13 đến chân 10 trên Arduino (đặt lại)
  • Ghim 4 trên ATtiny13 vào GND trên Arduino (mặt đất)
  • Chân 5 trên ATtiny13 đến chân 11 trên Arduino (MOSI)
  • Chân 6 trên ATtiny13 đến chân 12 trên Arduino (MISO)
  • Chân 7 trên ATtiny13 đến chân 13 trên Arduino (SCK)
  • Chân 8 trên ATtiny13 thành VCC / 5V / 3.3V trên Arduino (bất kỳ loại nào cũng hoạt động, nhưng 5V đáng tin cậy hơn) (VCC)

Tôi cũng đã cài đặt gói phần cứng, nhưng nó có lẽ không cần thiết. Nếu nghi ngờ, hãy thử nó. Nó sẽ không gây hại gì. Nhưng đừng ghi bộ nạp khởi động vì nó có thể sẽ làm hỏng đèn pin của bạn.

Bước 5: Flash nó

Để flash phần sụn, bạn cần cài đặt AVRDUDE. Để kiểm tra nó hoạt động với Arduino của tôi, tôi chạy:

avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n

Nếu nó hoạt động, tôi chuyển đến một thư mục trống ở đâu đó và chạy:

avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i

Để tạo một bản sao lưu của phần sụn hiện có. Và để flash nó, từ thư mục có blf-a6.hex đã sửa đổi, tôi chạy:

avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m

Vì một số lý do, tôi phải chỉ định stk500v1 làm lập trình viên và nó không hoạt động trừ khi tôi chỉ định cổng và tốc độ truyền. Nếu bạn đang sử dụng Arduino và nghi ngờ, hãy thử ngắt kết nối ATtiny13 của bạn khỏi Arduino và tải lên bản phác thảo trong Arduino IDE bằng cách sử dụng cài đặt tại đây. Nó sẽ không thành công, nhưng nó sẽ cho biết nó đang sử dụng lệnh nào trong cửa sổ giao diện điều khiển. Bạn có thể sao chép các thuộc tính vào lệnh AVRDUDE của mình.

Nếu bạn đang sử dụng trình lập trình USB ASP, hãy chạy:

avrdude -v -p attiny13 -c usbasp -n

Để xem nó có hoạt động không và:

avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Uhfuse: r: hfuse-dump.hex: i

Để tạo một bản sao lưu và:

avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m

Để flash nó.

-Uflash: w: blf-a6.hex đề cập đến tệp mà nó đang nhấp nháy. Thay thế blf-a6.hex bằng tên tệp của bạn nếu nó khác.

- Sử dụng: w: 0x75: m và - Sử dụng: w: 0xFF: m là các cầu chì. Của bạn có thể khác, vì vậy hãy kiểm tra kỹ các giá trị trong flashlight-firmware / bin / flash-tiny13-fuses.sh.

Nếu nó cho lỗi nằm ngoài phạm vi, điều đó có nghĩa là hình ảnh quá lớn để phù hợp với chip và bạn phải xóa một số mã. Nếu nó nhấp nháy thành công, nó sẽ hiển thị một số thanh tiến trình, sau đó nói "avrdude done. Cảm ơn bạn."

Nếu nó cho biết "chữ ký thiết bị không hợp lệ" và jumper trên bộ lập trình của bạn được đặt thành 3,3v, hãy thử đặt nó thành 5v.

Sau khi bạn đã chiếu đèn, hãy lắp ráp lại đèn pin và xem nó có hoạt động không. Mỏ đã làm, nhưng thời gian đang Tắt Đối với một số ̶r̶e̶a̶s̶o̶n̶.̶ Long ép cần phải được khoảng ba giây thay vì ̶1̶.̶5̶.̶ Tôi không biết nếu nó làm gì đó với Arduino hoặc vì Tôi đã sử dụng các thiết lập sai ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Nếu bạn có bất kỳ ý tưởng, ̶ Hãy cho tôi biết trong ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Chỉnh sửa: Tôi đã sửa nó. (xem bước 1)

Đề xuất: