विषयसूची:

कस्टम फ़र्मवेयर को BLF A6 टॉर्च पर फ्लैश करना: 5 कदम
कस्टम फ़र्मवेयर को BLF A6 टॉर्च पर फ्लैश करना: 5 कदम

वीडियो: कस्टम फ़र्मवेयर को BLF A6 टॉर्च पर फ्लैश करना: 5 कदम

वीडियो: कस्टम फ़र्मवेयर को BLF A6 टॉर्च पर फ्लैश करना: 5 कदम
वीडियो: Increase the brightness of the Flashlight/Torch on any Samsung Galaxy Phone 🔦 2024, जुलाई
Anonim
BLF A6 टॉर्च में कस्टम फ़र्मवेयर चमकाना
BLF A6 टॉर्च में कस्टम फ़र्मवेयर चमकाना

मुझे हाल ही में एक BLF A6 मिला है। यह बहुत अच्छा है, लेकिन मुझे डिफ़ॉल्ट मोड समूहों में से कोई भी पसंद नहीं है, इसलिए मैंने अपनी पसंदीदा चमक का उपयोग करने के लिए फर्मवेयर को संशोधित किया। जानकारी मिलना मुश्किल था, इसलिए मैंने जो कुछ भी सीखा, उसे मैं यहां अपने और दूसरों के लिए रख रहा हूं।

आपूर्ति

BLF A6 (यह शायद अन्य ATtiny आधारित फ्लैशलाइट के साथ काम करेगा)

चिमटी / पतली सरौता / छोटी कैंची / ड्राइवर बोर्ड रिटेनिंग रिंग को पूर्ववत करने के लिए कुछ

फ्लैश करने के लिए कंप्यूटर, अधिमानतः एक लिनक्स वितरण चलाना

USB ASP प्रोग्रामर / Arduino / कुछ ऐसा जो AVR प्रोग्रामिंग कर सकता है (जाहिरा तौर पर USB ASP प्रोग्रामर की सिफारिश की जाती है, लेकिन मैंने एक Arduino का उपयोग किया है)

SOIC8 क्लिप (इसके बिना करना संभव है, लेकिन यह बहुत ही काल्पनिक है और बिल्कुल भी अनुशंसित नहीं है)

(वैकल्पिक) कनेक्टिंग को आसान बनाने के लिए ब्रेडबोर्ड और/या जम्पर तार

चरण 1: फर्मवेयर डाउनलोड करें

BLF A6 (और कई अन्य फ्लैशलाइट) के लिए फर्मवेयर यहां उपलब्ध है। लेखक यहाँ इसके बारे में बात करता है। आप इसे चलाकर डाउनलोड कर सकते हैं:

bzr शाखा lp:~टॉयकीपर/फ़्लैशलाइट-फ़र्मवेयर/blf-a6-फ़ाइनल

एक टर्मिनल में। (आपको bzr इंस्टॉल करना पड़ सकता है)

नोट: इस निर्देश के पिछले संपादन में मैंने इसके बजाय "bzr शाखा एलपी: टॉर्च-फर्मवेयर" का उपयोग किया था। मैंने तब से सीखा है कि यह ऑफ-टाइम कैपेसिटर के लिए गलत मानों के साथ एक पुराना संस्करण डाउनलोड करता है, जिससे बटन असुविधाजनक रूप से लंबा हो जाता है। (रेडिट पर इस धागे के लिए धन्यवाद)

आप जो फोल्डर चाहते हैं वह blf-a6- final/ToyKeeper/blf-a6 है। इसमें एक संकलित.hex फ़ाइल फ्लैश के लिए तैयार (blf-a6.hex) और C कोड है जिसे आप संशोधित कर सकते हैं। (blf-a6.c) यदि आप स्टॉक फर्मवेयर को फ्लैश करना चाहते हैं तो आप अगले चरण को छोड़ सकते हैं और बस blf-a6.hex का उपयोग कर सकते हैं। उस भंडार में कुछ अन्य फर्मवेयर शायद भी काम करेंगे।

चरण 2: फर्मवेयर को संशोधित करें

अपने पसंदीदा टेक्स्ट एडिटर या IDE में blf-a6.c खोलें। सबसे दिलचस्प लाइनें 116 और 131 लाइनों के बीच मोड समूह हैं। वे इस तरह दिखते हैं:

// मोड समूह 1 # परिभाषित करें NUM_MODES1 7 // बड़े सर्किट (FET या Nx7135) के लिए PWM स्तर # परिभाषित करें MODESNx1 0, 0, 0, 7, 56, 137, 255 // छोटे सर्किट के लिए PWM स्तर (1x7135) # परिभाषित MODES1x1 2, 20, 110, 255, 255, 255, 0 // मेरा नमूना: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // क्रोनो नमूना: 6=5..21, 7=17..32, 8=33..96(50..78) // Manker2: 2=21, 3=39, 4=47, … 6?=68 // प्रत्येक मोड के लिए PWM गति # परिभाषित करें MODES_PWM1 चरण, तेज़, तेज़, तेज़, तेज़, तेज़, चरण // मोड समूह 2 # परिभाषित करें NUM_MODES2 4 # परिभाषित करें MODESNx2 0, 0, 90, 255 # परिभाषित मोड 1x2 20, 230, 255, 0 # परिभाषित करें MODES_PWM2 तेज, तेज, तेज, चरण

प्रत्येक समूह के लिए, MODESN FET के लिए उपयोग किया जाने वाला PWM मान है, और MODES1 प्रत्येक मोड में 7135 के लिए उपयोग किया जाने वाला PWM मान है। संख्या 0 और 255 के बीच है, और प्रकाश की चमक से मेल खाती है। अधिक जानकारी यहाँ। (नीचे स्क्रॉल करें "मोड विनियमन:") मुझे यकीन नहीं है कि पीडब्लूएम गति वास्तव में क्या है। किसी को पता हो तो कमेंट में बताए। FET ७१३५ की तुलना में अधिक प्रकाश उत्पन्न कर सकता है, लेकिन ७१३५ बैटरी के जीवन के दौरान प्रकाश स्तर को कमोबेश समान रखता है, जबकि बैटरी खत्म होने पर FET गहरा हो जाता है।

यहां आप अपनी पसंद के अनुसार मोड बनाने के लिए पीडब्लूएम मानों को समायोजित कर सकते हैं। आप शायद मोड की संख्या भी बदल सकते हैं, लेकिन मैंने इसे आज़माया नहीं है क्योंकि मुझे चार मोड चाहिए थे, जो कि दूसरे समूह में नंबर होता है। मैं एक गहरा चांदनी मोड चाहता था, इसलिए मैंने पहले वाले को 0/1 पर सेट किया, और मुझे टर्बो मोड थोड़ा व्यर्थ लगता है, इसलिए मैंने इसे 137/255 के साथ बदल दिया, सात मोड समूह में मोड छह के बराबर। यदि आवश्यक हो तो आप शायद शेष कोड को संशोधित कर सकते हैं, लेकिन मैंने कोशिश नहीं की है।

जब आपको वह कोड मिल जाए जो आप चाहते हैं, तो आपको उसे एक.hex फ़ाइल में संकलित करना होगा। कम से कम, आपको gcc-avr और avr-libc की आवश्यकता है। यदि आपको कोई समस्या है, तो फ़र्मवेयर रीडमी में अन्य निर्भरताएँ देखें। भंडार में एक बिल्ड स्क्रिप्ट शामिल है, लेकिन मैं इसे काम पर नहीं ला सका। इसके बजाय, मैंने पुराने संस्करण को डाउनलोड किया

bzr शाखा एलपी: टॉर्च-फर्मवेयर

और पुरानी बिल्ड स्क्रिप्ट की प्रतिलिपि बनाई (जिसे मैं काम कर सकता था) नए पर। फिर मैं भागा:

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

blf-a6 फ़ोल्डर में। (ऐसा करने का एक बेहतर तरीका होना चाहिए)../../bin/build.sh स्क्रिप्ट को कॉल करता है, 13 निर्दिष्ट करता है कि यह ATtiny13 के लिए निर्माण कर रहा है और blf-a6 निर्दिष्ट करता है कि यह BLF A6 के लिए है। (डुह) यह आपको बताएगा कि यह कौन से आदेश चला रहा है और आपको आउटपुट देता है। मेरा ऐसा दिखता है:

avr-gcc -वॉल -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 -सेक्शन-फ्लैग्स=.eeprom=alloc, load --change-section-lma.eeprom=0 --no-change-चेतावनी-O ihex blf-a6.elf blf-a6.hex प्रोग्राम: १०२२ बाइट्स (९९.८% फुल) डेटा: १३ बाइट्स (२०.३% पूर्ण)

आदेश पहले से ही आकार के लिए अनुकूलित हैं, इसलिए यदि यह कहता है कि यह 100% से अधिक भरा हुआ है, तो टिप्पणी करने का प्रयास करें

#परिभाषित करें FULL_BIKING_STROBE

छोटे न्यूनतम बाइकिंग स्ट्रोब का उपयोग करने के लिए लाइन 147 पर। अगर यह अभी भी फिट नहीं होता है, तो आपको शायद कहीं और कोड निकालना होगा। जब यह संकलन समाप्त हो जाए, तो फ़ोल्डर में blf-a6.hex नामक एक फ़ाइल होनी चाहिए। यह आपका संकलित कोड है, जो फ्लैश के लिए तैयार है।

चरण 3: टॉर्च को अलग करें

टॉर्च को अलग करें
टॉर्च को अलग करें
टॉर्च को अलग करें
टॉर्च को अलग करें
टॉर्च को अलग करें
टॉर्च को अलग करें

बल्ब के सिरे को वामावर्त खोल दें। यहां दो पेंच जोड़ हैं। टॉर्च के बल्ब के अंत के करीब एक परावर्तक और एलईडी को खोलता है, और बीच के करीब एक ड्राइवर बोर्ड को खोलता है। आप चाहते हैं कि एक बीच के करीब हो।

अंदर, आपको बैटरी स्प्रिंग और उसमें दो छेद वाली एक रिटेनिंग रिंग दिखनी चाहिए। अपनी चिमटी/पतले सरौता/कैंची को छेदों में डालें और उन्हें वामावर्त घुमाएं। यह काफी कठोर है, और दो अलग-अलग वस्तुओं का उपयोग करने से शायद आपको पर्याप्त लाभ नहीं मिलेगा। मैंने स्विस आर्मी नाइफ पर कैंची का इस्तेमाल किया।

एक बार जब आप रिंग निकाल लें, तो ड्राइवर बोर्ड को मुक्त करें। यह अभी भी दो तारों से जुड़ा हुआ है, इसलिए सावधान रहें। वे एक साथ मुड़ जाते हैं, इसलिए बोर्ड को एक या दूसरे तरीके से घुमाएं जब तक कि तार ढीले न हो जाएं। जब आपके पास पर्याप्त छूट हो, तो बोर्ड को पलटें। आप इसे इसलिए चाहते हैं ताकि उस पर "TINY13A" वाला चिप ऊपर और अधिक सुलभ हो। अगर यह गलत तरफ है, तो इसे दूसरी तरफ पलटें। वसंत को किनारे के नीचे दबाओ। यह अस्थायी रूप से इसे अपनी जगह पर रखेगा और चिप तक पहुंचना आसान बना देगा। यदि आपको इससे परेशानी है, तो आप शायद दूसरे जोड़ को हटा सकते हैं और दो तारों को दूसरी तरफ से हटा सकते हैं ताकि आप बोर्ड को पूरी तरह से हटा सकें, लेकिन मैंने इसकी कोशिश नहीं की है।

चरण 4: फ्लैशिंग हार्डवेयर कनेक्ट करें

चमकती हार्डवेयर कनेक्ट करें
चमकती हार्डवेयर कनेक्ट करें
चमकती हार्डवेयर कनेक्ट करें
चमकती हार्डवेयर कनेक्ट करें
चमकती हार्डवेयर कनेक्ट करें
चमकती हार्डवेयर कनेक्ट करें

अब आप SOIC8 क्लिप का उपयोग ATtiny13 चिप और अपने प्रोग्रामर को जोड़ने के लिए करते हैं। मेरे SOIC8 क्लिप के साथ, यदि मेरे पास दोनों सिरों के बाईं ओर लाल तार है, तो क्लिप एंड पर मेरे करीब पिन की पंक्ति कनेक्टर के अंत में मेरे करीब पिन की पंक्ति से मेल खाती है, जब कनेक्टर नीचे की ओर होता है। (मेरा सुपर कलात्मक आरेख देखें) यह मार्गदर्शिका अनुशंसा करती है कि आप USB ASP V2.0 प्रोग्रामर का उपयोग करें। यदि आप करते हैं, तो इसे इस तरह कनेक्ट करें:

  • USB ASP (रीसेट) पर 5 पिन करने के लिए ATtiny13 पर 1 पिन करें
  • USB ASP (जमीन) पर 10 पिन करने के लिए ATtiny13 पर 4 पिन करें
  • USB ASP (MOSI) पर 1 पिन करने के लिए ATtiny13 पर 5 पिन करें
  • USB ASP (MISO) पर 9 पिन करने के लिए ATtiny13 पर 6 पिन करें
  • USB ASP (SCK) पर 7 पिन करने के लिए ATtiny13 पर 7 पिन करें
  • USB ASP (VCC) पर 2 पिन करने के लिए ATtiny13 पर 8 पिन करें

अगर, मेरी तरह, आप एक Arduino का उपयोग कर रहे हैं, तो आपको थोड़ी और तैयारी करनी होगी। इस गाइड के चरण शून्य और दो का पालन करें:

Arduino IDE खोलें और सुनिश्चित करें कि आपका Arduino आपके कंप्यूटर से जुड़ा है। फ़ाइल>उदाहरण>11. ArduinoISP>ArduinoISP में ISP स्केच ढूंढें और इसे अपने Arduino पर अपलोड करें। फिर ATtiny13 को इससे इस तरह कनेक्ट करें:

  • Arduino (रीसेट) पर 10 पिन करने के लिए ATtiny13 पर 1 पिन करें
  • Arduino (जमीन) पर ATtiny13 से GND पर पिन 4
  • Arduino (MOSI) पर 11 पिन करने के लिए ATtiny13 पर पिन 5
  • Arduino (MISO) पर 12 पिन करने के लिए ATtiny13 पर पिन 6
  • Arduino (SCK) पर 13 पिन करने के लिए ATtiny13 पर पिन 7
  • Arduino पर ATtiny13 से VCC / 5V / 3.3V पर पिन 8 (किसी को भी काम करना चाहिए, लेकिन 5V अधिक विश्वसनीय है) (VCC)

मैंने हार्डवेयर पैकेज भी स्थापित किया, लेकिन शायद यह आवश्यक नहीं था। यदि संदेह है, तो कोशिश करें। यह कोई नुकसान नहीं करेगा। लेकिन बूटलोडर को न जलाएं क्योंकि यह संभवत: आपकी टॉर्च को ईंट कर देगा।

चरण 5: इसे फ्लैश करें

फर्मवेयर को फ्लैश करने के लिए, आपको AVRDUDE इंस्टॉल करना होगा। यह जाँचने के लिए कि यह मेरे Arduino के साथ काम करता है, मैं दौड़ता हूँ:

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

अगर यह काम करता है, तो मैं कहीं खाली फ़ोल्डर में जाता हूं और दौड़ता हूं:

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

मौजूदा फर्मवेयर का बैकअप बनाने के लिए। और इसे फ्लैश करने के लिए, संशोधित blf-a6.hex I वाले फ़ोल्डर से:

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

किसी कारण से, मुझे प्रोग्रामर के रूप में stk500v1 निर्दिष्ट करना होगा, और यह तब तक काम नहीं करता जब तक कि मैं पोर्ट और बॉड दर निर्दिष्ट नहीं करता। यदि आप एक Arduino का उपयोग कर रहे हैं और संदेह में हैं, तो Arduino से अपने ATtiny13 को डिस्कनेक्ट करने का प्रयास करें और यहां सेटिंग्स का उपयोग करके Arduino IDE में एक स्केच अपलोड करें। यह विफल हो जाएगा, लेकिन यह कहना चाहिए कि यह कंसोल विंडो में किस कमांड का उपयोग कर रहा है। आप विशेषताओं को अपने AVRDUDE कमांड में कॉपी कर सकते हैं।

यदि आप USB ASP प्रोग्रामर का उपयोग कर रहे हैं, तो इसके बजाय चलाएँ:

avrdude -v -p attiny13 -c usbasp -n

यह देखने के लिए कि क्या यह काम करता है और:

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

बैकअप बनाने के लिए और:

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

इसे फ्लैश करने के लिए।

-Uflash:w:blf-a6.hex उस फ़ाइल को संदर्भित करता है जो चमकती है। यदि यह भिन्न है तो blf-a6.hex को अपने फ़ाइल नाम से बदलें।

-Ulfuse:w:0x75:m और -Uhfuse:w:0xFF:m फ्यूज हैं। आपका अलग हो सकता है, इसलिए फ्लैशलाइट-फर्मवेयर/बिन/फ्लैश-टिनी13-फ्यूज.श में मानों की दोबारा जांच करें।

यदि यह सीमा से बाहर त्रुटि देता है, तो इसका मतलब है कि छवि चिप पर फिट होने के लिए बहुत बड़ी है और आपको कुछ कोड निकालना होगा। यदि यह सफलतापूर्वक चमकता है, तो इसे कुछ प्रगति सलाखों को प्रदर्शित करना चाहिए, फिर कहें "अवरुद्ध हो गया। धन्यवाद।"

यदि यह "अमान्य डिवाइस हस्ताक्षर" कहता है और आपके प्रोग्रामर पर जम्पर 3.3v पर सेट है, तो इसे 5v पर सेट करने का प्रयास करें।

इसे फ्लैश करने के बाद, अपनी फ्लैशलाइट को फिर से इकट्ठा करें और देखें कि यह काम करता है या नहीं। मेरा था, लेकिन समय है बंद के लिए कुछ ̶r̶e̶a̶s̶o̶n̶.̶ लांग प्रेस की जरूरत हो के बारे में तीन सेकंड के बजाय ̶1̶.̶5̶.̶ मैं नहीं है पता है अगर यह कुछ के साथ Arduino या क्योंकि मैंने इस्तेमाल किया गलत सेटिंग ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ यदि आपके पास किसी भी विचार, ̶ मुझे पता म ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

संपादित करें: मैंने इसे ठीक किया। (चरण 1 देखें)

सिफारिश की: