विषयसूची:
- चरण 1: आवश्यकताएँ 1/3 - हार्डवेयर
- चरण 2: आवश्यकताएँ 2/3 - आपके सर्किट के लिए घटक
- चरण 3: आवश्यकताएँ 3/3 - सॉफ़्टवेयर
- चरण 4: इनपुट सर्किट
- चरण 5: आउटपुट सर्किट
- चरण 6: [वैकल्पिक] मुद्रित सर्किट बोराड और सोल्डरिंग घटक बनाना
- चरण 7: एसओसी सेटअप
- चरण 8: प्रोग्रामिंग सी एचपीएस
- चरण 9: कार्ड से एडीसी का डिजिटल अधिग्रहण
- चरण 10: एफएफटी गणना
- चरण 11: एफएफटी प्रदर्शित करना
- चरण 12: विधानसभा
- चरण 13: ध्वनि प्रभाव
- चरण १४: [वैकल्पिक] हेलमेट बनाना
वीडियो: संयमी आवाज परिवर्तक हेलमेट: 14 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
नमस्कार! हम सोरबोन विश्वविद्यालय के पॉलिटेक्निक स्कूल के 4 छात्रों की एक टीम हैं:
- लुई बुचेर्टे
- बिलाल मेलेही
- बाओ तिन्ह पिओटो
- मार्को लोंगेपे
इस परियोजना को हमारे अध्ययन के हिस्से के रूप में महसूस किया गया है, और इसका उद्देश्य कई उपकरणों को हाथ में लेना है, साथ ही साथ हमारी सैद्धांतिक उपलब्धियों को प्रदर्शित करना है।
प्रसिद्ध वस्तु एक निश्चित वीडियो गेम के नायक के समान हेलमेट की उपस्थिति लेती है जिसका नाम खो जाएगा। डिज़ाइन पक्ष के लिए भी हमारे पास एक स्क्रीन है जो स्पीकर से निकलने वाले ऑडियो सिग्नल के फूरियर रूपांतरण को प्रदर्शित करती है। इस हेडसेट का उद्देश्य कई चुनिंदा प्रभावों का उपयोग करके वास्तविक समय में वाहक की आवाज को बदलना है।
शैक्षिक लक्ष्य:
- माइक्रोफ़ोन से ध्वनि कैप्चर करें
- सिग्नल को बढ़ाना, फ़िल्टर करना, डिजिटाइज़ करना
- सिग्नल के एफएफटी को समझें
- इस FFT को स्क्रीन पर दिखाएं
- सिग्नल संश्लेषण
- स्पीकर से ध्वनि निकालें
- ऑडियो ध्वनि पर प्रभाव का एहसास (प्रतिध्वनि, प्रतिध्वनि, आदि…)
अब जब हमने पृष्ठभूमि तैयार कर ली है और परियोजना प्रस्तुत कर दी है, तो यह आपके हाथों को प्राप्त करने का समय है!
चरण 1: आवश्यकताएँ 1/3 - हार्डवेयर
आपके हेलमेट को सफलतापूर्वक बनाने के लिए, डिवाइस को चलाने के लिए हमें कुछ हार्डवेयर की आवश्यकता होगी।
- टेरासिक + एडफ्रूट टीएफटी एलसीडी स्क्रीन (अरुडिनो) द्वारा DE0-नैनो-एसओसी डेवलपमेंट बोर्ड
- हेलमेट बनाने के लिए 3D प्रिंटर तक पहुंच (यदि आप एक विश्वविद्यालय के छात्र हैं तो अपने विश्वविद्यालय के करीब जाएं, कुछ में छात्रों के लिए प्रयोगशालाएं उपलब्ध हैं)
- एक इंटरनेट कनेक्शन वाला कंप्यूटर और न्यूनतम कनेक्टिविटी (USB, ईथरनेट) । आपके कंप्यूटर में भी एक मजबूत प्रोसेसर होना चाहिए क्योंकि Qsys पर प्रोग्राम संकलित करने में बहुत समय लगता है।
- (आवश्यक नहीं) एक प्रिंटर जो सर्किट आकार को छोटा करने के लिए Gerber फाइलों से प्रिंटेड सर्किट बोर्ड (पीसीबी) बनाता है + पीसीबी पर घटकों को रखने के लिए एक सोल्डरिंग आयरन।
- (दृढ़ता से अनुशंसित): हमारे निर्देश के साथ अपने काम का आनंद लेने के लिए एक अच्छी कॉफी:)
चरण 2: आवश्यकताएँ 2/3 - आपके सर्किट के लिए घटक
आपके सर्किट के लिए आवश्यक घटक यहां दिए गए हैं:
- टेक्सास इंस्ट्रूमेंट LM386 AB क्लास ऑडियो एम्पलीफायर
- ब्रेड बोर्ड
- पुरुष-पुरुष, पुरुष-महिला केबल का सेट
- LM358P डिजिटल-टू-अनलोह कनवर्टर (DAC)
- वक्ता
- एनालॉग सर्किट में इस्तेमाल किया जाने वाला छोटा माइक्रोफोन
- 1kOhm से 220kOhm. तक प्रतिरोधकों का गेम सेट
- संधारित्र 1.5nF
- संधारित्र 50nF
- संधारित्र 100nF
- संधारित्र 100uF
- संधारित्र 220uF
- x4 कैपेसिटर 10uF
चरण 3: आवश्यकताएँ 3/3 - सॉफ़्टवेयर
अंतिम लेकिन कम से कम, आपको सॉफ़्टवेयर की आवश्यकता होगी:
- क्वार्टस १५.१: लाइट संस्करण
- एसी कंपाइलर (उदाहरण के लिए जीसीसी)
- पीसीबी डिजाइन के लिए Altium
-
एसओसी मानचित्र के साथ संचार करने के लिए अल्टेरा का एसओसी एम्बेडेड सूट
- पोटीन
चरण 4: इनपुट सर्किट
चलो सर्किट बनाते हैं। सर्किट की उपरोक्त तस्वीर का उपयोग अपने ब्रेडबोर्ड पर इकट्ठा करने के लिए करें। पिन कैसे जुड़े हुए हैं यह देखने के लिए आप ब्रेडबोर्ड और सर्किट की तस्वीर भी देखेंगे। पूरा सर्किट 5V डायरेक्ट करंट (DC) से संचालित होता है। इसके लिए आप USB-B कन्वर्टर वाली 5V बैटरी या फंक्शन जेनरेटर का इस्तेमाल कर सकते हैं।
कुछ अनुस्मारक:
- 5V बिजली की आपूर्ति और जमीन ब्रेडबोर्ड की अलग-अलग क्षैतिज रेखाओं पर जुड़ी हुई है
- यदि आप 2 घटकों को समानांतर में जोड़ना चाहते हैं, तो उन्हें ब्रेडबोर्ड की एक सामान्य पंक्ति में रखें
- यदि आप 2 सीरियल घटकों को जोड़ना चाहते हैं, तो कंपोनेंट्स को ब्रेडबोर्ड की एक सामान्य पंक्ति में केवल एक पिन होना चाहिए।
ब्रेडबोर्ड का उपयोग कैसे करें और उस पर एक सर्किट कैसे बनाएं, इस पर समर्पित ट्यूटोरियल देखने में संकोच न करें। साथ ही LM358P ऑडियो एम्पलीफायर की पिन स्थिति को ध्यान से पढ़ना न भूलें (ऊपर चित्र देखें)
चरण 5: आउटपुट सर्किट
चरण 4 के समान ही निर्देश। चार इनपुट: एसडीआई, सीएस नहीं, एससीके, एलडीएसी नहीं आपके डीई0-नैनो-सोक बोर्ड से हैं। हम बाद में देखेंगे कि उन्हें कैसे उत्पन्न किया जाए।
LM386 ऑडियो एम्पलीफायर की पिन स्थिति को ध्यान से पढ़ना न भूलें (ऊपर चित्र देखें)
चरण 6: [वैकल्पिक] मुद्रित सर्किट बोराड और सोल्डरिंग घटक बनाना
यदि आप एक सर्किट बोर्ड प्रिंटर के मालिक हैं या एक का उपयोग करने में सक्षम हैं, तो हम अपना स्वयं का मुद्रित सर्किट बोर्ड (पीसीबी) बनाने जा रहे हैं। ध्यान दें कि यह चरण वैकल्पिक है। इस चरण में केवल आपके सर्किट को ब्रेडबोर्ड से पीसीबी में ले जाना शामिल है।
आपको इन 2 GERBER फ़ाइलों की आवश्यकता होगी।
ये फाइलें Altium पर बनाई गई थीं। अपने पीसीबी को प्रिंट करने के लिए अपने पीसीबी प्रिंटर सॉफ्टवेयर पर उनका इस्तेमाल करें। एक बार जब आप अपना पीसीबी प्राप्त कर लेते हैं, तो सुनिश्चित करें कि आपका पीसीबी साफ है और ट्रैक सही ढंग से मुद्रित हैं।
अब यहाँ असली सौदा आता है: सोल्डरिंग। ऊपर की 2 तस्वीरें पीसीबी पर सर्किट का नक्शा है। प्रत्येक घटक के नाम (R6, C4, MK1 आदि) होते हैं। चरण 4 और 5 में चित्र घटक मापदंडों (प्रतिरोध, चालन..) को दर्शाता है। प्रत्येक घटक को अपने ब्रेडबोर्ड से पीसीबी में उनके नाम के अनुसार रखें।
एक बार जब आप अपने टांका लगाने वाले लोहे के साथ सब कुछ मिलाप कर लेते हैं, तो यह जांचने के लिए कि क्या कोई शॉर्ट सर्किट है, वोल्टमीटर के साथ हर घटक का परीक्षण करें।
चरण 7: एसओसी सेटअप
एसओसी सेटअप के संबंध में, आपको टर्मिनल के भीतर एसओसी एम्बेडेड सूट में शामिल कुछ कमांड और स्क्रिप्ट चलाने की आवश्यकता होगी। ऐसा करने के लिए, आपको कुछ $PATH जोड़ना होगा। जब आप एक कमांड चला रहे होते हैं, तो पथ द्वारा दी गई निर्देशिकाओं में एक फ़ाइल की खोज करने के लिए कहने के लिए PATH का उपयोग टर्मिनल के भीतर किया जाता है। ऐसा करने के लिए, निम्न कमांड लाइन टाइप करें:
निर्यात पथ =/साइगड्राइव/सी/अल्टेरा_लाइट/15.1/क्वार्टस/एसओपीसी_बिल्डर/बिन:$पथ
फिर सोफ फ़ाइल से हेडर जेनरेट करने के लिए कमांड लाइन टाइप करें। आप अपने प्रोजेक्ट को क्वार्टस पर संकलित करके सोफ फ़ाइल प्राप्त करते हैं। ऐसा करने के लिए, टाइप करें:./generate_header.
चरण 8: प्रोग्रामिंग सी एचपीएस
हमें इस भाग में 2 चीजों को समझने की जरूरत है, अर्थात् एडीसी के मूल्य को पढ़ें और इसे एसपीआई में लिखें।
1. एडीसी का मूल्य पढ़ें
स्मृति का पता जिसमें एडीसी निहित है, सीधे पहुंच योग्य नहीं है, वास्तव में कार्ड पर मौजूद लिनक्स सिस्टम स्मृति का एक अमूर्त सेट करता है। वास्तव में एडीसी पते तक पहुंचने के लिए हम एमएमएपी फ़ंक्शन का उपयोग करेंगे।
"h2p_lw_spi_addr=virtual_base + ((अहस्ताक्षरित लंबा) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) और (अहस्ताक्षरित लंबा) (HW_REGS_MASK));"
यह निर्देश एडीसी के लिए आवंटित स्मृति के पते तक पहुंचने के लिए आधार पते की शुरुआत में एक ऑफसेट जोड़ने की अनुमति देता है, और परिणामी पते पर एक तर्क और मास्किंग को ध्यान में रखता है।
उसके बाद, प्रोग्राम में पॉइंटर को उसका मान प्राप्त करने के लिए केवल डीरेफरेंस करना आवश्यक होगा।
2. SPI में ADC का मान लिखें
हेरफेर समान है, इस बार हम एमएमएपी को एसपीआई द्वारा आवंटित पते पर उतरने के लिए ऑफसेट देते हैं। एसपीआई में लिखते समय, तकनीकी दस्तावेज निर्दिष्ट करता है कि आपको पते पर + 1 एडीसी का मूल्य लिखना होगा।
"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"
यह निर्देश आपको SPI को लिखने की अनुमति देता है। वास्तव में बिट 4, इसलिए 1 << 12, वह बिट है जो एसपीआई को सक्रिय करने की अनुमति देता है। तार्किक OR के साथ, इसलिए हम SPI को सक्रियण बिट और ADC का मान दोनों देते हैं।
चरण 9: कार्ड से एडीसी का डिजिटल अधिग्रहण
सबसे पहले, आपको कंट्रोल पैनल -> नेटवर्क -> कार्ड पार्सल के माध्यम से अपने कंप्यूटर का ईथरनेट आईपी एड्रेस सेट करना होगा। कार्ड, संपत्ति, आईपीवी 4 पते के ईथरनेट इंटरफेस का चयन करें और एक निश्चित आईपी, एक मुखौटा आदि दर्ज करें …
इसके बाद, कार्ड को पावर जैक की तरफ से माइक्रो यूएसबी केबल से कनेक्ट करें। क्वार्टस प्रोग्रामर खोलें और एक्सपोर्ट लॉन्च करें। कार्ड के प्रत्येक पावर ऑफ के बाद यह हेरफेर फिर से किया जाएगा।
इस बार ईथरनेट जैक के बगल में कनेक्ट करने के लिए माइक्रो यूएसबी प्लग केबल बदलें। अब पुट्टी से कार्ड से सीरियल लिंक से जुड़ना जरूरी होगा। तस्वीरों में कॉन्फ़िगरेशन दिखाई दे रहा है, COM5 को COM द्वारा प्रतिस्थापित करने का विचार उसके बाद वह नंबर है जो आप अपने डिवाइस मैनेजर में पा सकते हैं (इसे खोलने के लिए विंडोज़ लोगो पर राइट क्लिक करें)।
एंटर दबाएं, आप जुड़े हुए हैं।
परियोजना को पुनः आरंभ करने के लिए जानकारी: - कार्ड के अनुरूप ईथरनेट आईपी को ठीक करें - कार्ड चालू करें, हर बार जब आप बिजली चालू करते हैं, तो कार्ड में संकलित परियोजना को क्वार्टस के तहत "प्रोग्राम" के साथ रखना आवश्यक है। यह माइक्रो-यूएसबी पोर्ट के माध्यम से किया जाता है - प्रोग्राम के परिणाम को प्रदर्शित करने में सक्षम होने के लिए हम अधिक माइक्रो यूएसबी का उपयोग करते हैं लेकिन यूएआरटी - सीरियल COM5 (या 6 घड़ी गेस्टिनेयर पेरीफ) के लिए पुटी कॉन्फ़िगर के साथ कार्ड से कनेक्ट करें। - एक पासवर्ड सेट करें (पासवार्ड) - आईपी एड्रेस सेट करें ifconfig ethxx IPchoice (पीसी के एथ के लिए आईपी उससे दूर नहीं है) - टर्मिनल एम्बेडेड (निर्यात PATH) के साथ Qsys के अनुसार हेडर जेनरेट करें - मेक - scp l exec में नक्शा - पुट्टी द प्रोग के तहत निष्पादित करें
चरण 10: एफएफटी गणना
हमारे सी प्रोग्राम में फास्ट फूरियर ट्रांसफॉर्म प्राप्त करने के लिए, हम मार्क बोर्गरडिंग: किस एफएफटी द्वारा लिखित पुस्तकालय का उपयोग करेंगे। आप यहां पुस्तकालय डाउनलोड कर सकते हैं: https://kissfft.sourceforge.net/। सिग्नल प्रभाव को संशोधित करने और लागू करने के लिए सिग्नल पर FFT लागू करना आवश्यक है। यह सिग्नल के स्पेक्ट्रम को प्रदर्शित करने के लिए भी काम कर सकता है।
आपके सी प्रोग्राम में पहला कदम एफएफटी परिणाम को स्टोर करने के लिए मेमोरी आवंटित करना है। मेमोरी का आकार FFT की गणना के लिए उपयोग किए जाने वाले बिंदु की संख्या पर निर्भर करता है। आपके पास जितने अधिक अंक होंगे, FFT उतना ही अधिक सटीक होगा। हालाँकि, प्रोग्राम धीमा चलेगा और अधिक मेमोरी का उपयोग करेगा। ध्यान दें कि आपको Kiss_fft फ़ंक्शन से दो सरणियाँ मिलेंगी: फ़ंक्शन का इनपुट और आउटपुट (cx_in और cx_out)
एक बार जब हमारी सरणी नए FFT मानों से भर जाती है, अर्थात जब r = Win-1, हम FFT को संसाधित कर रहे हैं। प्रदर्शन के संबंध में, हम केवल स्पेक्ट्रम के सकारात्मक भाग को प्रदर्शित कर रहे हैं, क्योंकि नकारात्मक भाग और सकारात्मक भाग के बीच एक समरूपता है।
क्षैतिज अक्ष के संबंध में, हम मुख्य आवृत्तियों की चोटियों को अलग करने के लिए शिखर मूल्यों को १००*ऊंचाई/(ऊंचाई²) से कम कर रहे हैं।
हम एडीसी मूल्यों के लिए एक पठन आवृत्ति को परिभाषित करने के लिए स्लीप सिस्टम कॉल का उपयोग कर रहे हैं। यह आवृत्ति वर्तमान में 1, 5 हर्ट्ज पर सेट है।
चरण 11: एफएफटी प्रदर्शित करना
यहां उपलब्ध एडफ्रूट टीएफटी एलसीडी स्क्रीन पर दिए गए उदाहरण के आधार पर: https://www.terasic.com/downloads/cd-rom/de0-nano-s… हमने अपने बोर्ड के एनआईओएस को प्रोग्राम किया है ताकि वह पढ़ सके एडीसी मूल्य।
इसलिए ADC रजिस्टर को NIOS और HPS के बीच साझा किया जाता है क्योंकि ADC मानों का उपयोग NIOS स्क्रीन पर FFT को प्रदर्शित करने के लिए किया जाएगा, और वही मान SPI पर लिखे जाएंगे ताकि बोर्ड से आउटपुट किया जा सके और अंत में परिवर्तित किया जा सके। डीएसी द्वारा एक अनुरूप संकेत प्राप्त करने के लिए।
चरण 12: विधानसभा
हम लगभग कर चुके हैं! आपको प्रोजेक्ट के हर हिस्से (एंट्री सर्किट, आउटपुट सर्किट और बोर्ड) को असेंबल करना होगा। क्वार्टस प्रोजेक्ट के अनुसार पुर्जों को सही पिन से जोड़ना सुनिश्चित करें।
- इनपुट सर्किट माइक्रोफ़ोन द्वारा कैप्चर किए गए ऑडियो सिग्नल को प्रवर्धित, फ़िल्टर्ड और ऑफ़सेट भेजेगा।
- कार्ड पर मौजूद प्रोग्राम सी एडीसी के मूल्यों को पढ़ेगा जैसा कि हमने पहले देखा है, और इसे एसपीआई पर लिखेंगे ताकि हम कार्ड के जीपीआईओ पर मूल्य पुनर्प्राप्त कर सकें।
- फिर SPI का आउटपुट GPIO उस सूचना को प्रसारित करेगा जिसे हमारे DAC द्वारा डिकोड किया जाएगा और स्पीकर तक पहुंचने के लिए दौड़कर बढ़ाया जाएगा।
चरण 13: ध्वनि प्रभाव
केवल एक ही कदम बचा है ध्वनि प्रभाव।
उपलब्ध प्रभाव हैं:
- उच्च आवृत्ति फ़िल्टर
- कम आवृत्ति फ़िल्टर
- …
आप एक बटन की मदद से प्रभावों के बीच स्विच कर सकते हैं। यह बटन हमारे सी प्रोग्राम में एक वेरिएबल को बदल देगा, इसलिए यह सही प्रभाव लागू कर सकता है।
चरण १४: [वैकल्पिक] हेलमेट बनाना
यहां हम परियोजना के सबसे मैनुअल चरण में हैं:
- पहले हमने हेलमेट के अलग-अलग 3डी प्रिंटेड हिस्सों को चिपकाया।
- चिपके हुए टुकड़ों के बीच अंतराल को भरने के लिए हमने एक 3D पेन का उपयोग करके एक फिनिश जोड़ा।
- हमने पेन और हेलमेट से भरे इंटरस्टिसेस को अधिक सामान्य रूप से पॉलिश किया ताकि पेंटिंग बाद में अच्छी तरह से बनी रहे।
- हमने हेलमेट को 2 परतों से रंगा है: पहला एन्थ्रेसाइट काले रंग में, ऊपर की ओर, और दूसरा प्राथमिक हरा आगे से गहरा हरा रंग देने के लिए।
- अंत में हमने हेलमेट के किनारे अपने स्कूल का लोगो छाप दिया
सिफारिश की:
ताला परिवर्तक: क्यूआर-कोड के साथ दरवाजा खोलें: 8 कदम
लॉक चेंजर: क्यूआर-कोड के साथ ओपन डोर: हैलो, मेरा नाम बेन वानपॉके है और मैं हॉवेस्ट, बेल्जियम में न्यू मीडिया एंड कम्युनिकेशन टेक्नोलॉजी का अध्ययन करता हूं। स्कूल के लिए एक असाइनमेंट के रूप में, हमें एक IoT-डिवाइस बनाने की आवश्यकता थी। Airbnb के माध्यम से आवास किराए पर लेना, मुझे एक अपार्टमेंट खोलने का विचार आया
अपनी आवाज के साथ आरजीबी एलईडी या लेडस्ट्रिप्स को नियंत्रित करने के लिए कॉर्टाना और एक अरुडिनो का प्रयोग करें!: 4 कदम (चित्रों के साथ)
अपनी आवाज के साथ आरजीबी एलईडी या एलईडीस्ट्रिप्स को नियंत्रित करने के लिए कॉर्टाना और एक अरुडिनो का उपयोग करें !: इस निर्देश में मैं आपको दिखाऊंगा कि आप अपनी आवाज के साथ आरजीबी एलईडी या एलईडी पट्टी को कैसे नियंत्रित कर सकते हैं। यह सीओआरजीबी ऐप द्वारा किया जाता है जो विंडोज़ ऐप स्टोर में मुफ्त में उपलब्ध है। यह ऐप मेरे CortanaRoom प्रोजेक्ट का हिस्सा है। जब आप बुद्धि समाप्त कर लेते हैं
ध्वनि परिवर्तक: 5 कदम (चित्रों के साथ)
ध्वनि परिवर्तक: नमस्कार! आप हमेशा एक अधिग्रहण/पुनर्स्थापन ध्वनि प्रणाली बनाना चाहते थे जो आपकी ध्वनि को फ़िल्टरिंग या मॉड्यूलेशन जैसे प्रभाव से बदलने में सक्षम हो! ध्वनि परिवर्तक आपके लिए बनाया गया है! इस परियोजना को लगभग 10 घंटे और $ 173.78.1 DE0 नैनो का बजट चाहिए तो
हेलमेट के साथ दो बेधड़क पंक आउटफिट कैसे बनाएं: 5 कदम (चित्रों के साथ)
हेलमेट के साथ दो डफ पंक आउटफिट कैसे बनाएं: अपने 30 वें जन्मदिन के लिए मैंने एक डी-थीम वाली पोशाक पार्टी का फैसला किया, मेरी प्रेमिका काइली और मैंने फैसला किया कि हम डफ्ट पंक के रूप में जाएंगे। वेश-भूषा बनाने में काफी शामिल थे, लेकिन हमने बहुत मज़ा किया और वे बहुत अच्छे लग रहे थे! हमने बहुत सारे संसाधनों का उपयोग किया
तकनीकी वाइकिंग! स्पेस वाइकिंग हेलमेट पर एलईडी हॉर्न: वॉल्यूम इंडिकेटर + ट्रांसुसेंट वाइकिंग हेलमेट: 6 कदम
तकनीकी वाइकिंग! एक अंतरिक्ष वाइकिंग हेलमेट पर एलईडी हॉर्न: वॉल्यूम संकेतक + पारभासी वाइकिंग हेलमेट: हाँ! यह स्पेस वाइकिंग्स के लिए एक हेलमेट है। ***अपडेट करें, इसका नाम बदलकर टेक्नो वाइकिंग हेलमेट होना चाहिए*** लेकिन यह अक्टूबर 2010 है और मैंने आज ही टेक्नो वाइकिंग के बारे में सीखा। मेम कर्व के पीछे। Whateva' यहाँ वह उच्च उत्पादन के साथ है