Სარჩევი:

დამსხვრეული ღვინის ჭიქები ხმით !: 10 ნაბიჯი (სურათებით)
დამსხვრეული ღვინის ჭიქები ხმით !: 10 ნაბიჯი (სურათებით)

ვიდეო: დამსხვრეული ღვინის ჭიქები ხმით !: 10 ნაბიჯი (სურათებით)

ვიდეო: დამსხვრეული ღვინის ჭიქები ხმით !: 10 ნაბიჯი (სურათებით)
ვიდეო: შარლოტა ბრონტე - "ჯეინ ეარი" - ნაწილი პირველი 2024, ივლისი
Anonim
Image
Image

გამარჯობა და მოგესალმებით!

აქ არის პროექტის სრული დემო ვერსია!

სპიკერი გამოდის დაახლოებით 130 დბ – ზე მისი მილის კიდეზე, ამიტომ სმენის დაცვა აუცილებლად არის საჭირო!

ამ პროექტის იდეა ასეთია:

მინდა შევძლო მცირე მიკროფონის გამოყენებით ღვინის ჭიქის რეზონანსული სიხშირის ჩაწერა. ამის შემდეგ მინდა ხელახლა წარმოვადგინო იგივე სიხშირე გაცილებით მაღალი მოცულობით, რათა გამოიწვიოს მინის დაშლა. მე ასევე მსურს შევძლო სიხშირის დახვეწა, თუ მიკროფონი ოდნავ გამორთულია. და ბოლოს, მინდა რომ ეს ყველაფერი იყოს დიდი ფანრის ზომის.

ღილაკის კონტროლი და მოქმედება:

- ზედა მარცხენა აკრიფეთ არის მბრუნავი კოდირება. მას შეუძლია უსასრულოდ დატრიალდეს და აიღოს ის მიმართულებით, სადაც ის ბრუნავს. ეს საშუალებას იძლევა გამომავალი სიხშირე იყოს მორგებული რომელიმე მიმართულებით. მბრუნავ კოდირებას ასევე აქვს შიგნით ღილაკი, რომლის საშუალებითაც შეგიძლიათ 'დააწკაპუნოთ' მასში. მე მაქვს ეს იმისათვის, რომ გამოვიყვანო გამომავალი სიხშირე იმ სიხშირეზე, რასაც თავდაპირველად 'იჭერდი'. ძირითადად, ის უბრალოდ ამოიღებს თქვენს რეგულირებას.

- ზედა მარჯვენა არის ჩართვის/გამორთვის გადამრთველი. ის ჩართავს ან გამორთავს მთელ წრეს.

- ქვედა მარცხნივ არის მიკროფონის გადაღების ღილაკი. ის მონაცვლეობს უგულებელყოფის სიხშირეების ჩაწერას და რეპროდუცირების სიხშირეებს შორის. ამ გზით თქვენ შეგიძლიათ ამოიღოთ იმ ოთახის "ატმოსფერული სიხშირეები", რომელშიც იმყოფებით.

- ქვედა მარჯვნივ არის დინამიკის გამომავალი ღილაკი. დაჭერისას სპიკერი იწყებს იმ სიხშირის გამოშვებას, რომელიც მანამდე დაიჭირა.

თუ თქვენც დაინტერესებული ხართ შუშის დამტვრევით, მიჰყევით ამ ინსტრუქციას და იქნებ თქვენ ისწავლოთ რაიმე სისუფთავე გზაზე. უბრალოდ თავდაყირა, ეს პროექტი მოიცავს უამრავ შედუღებას და 3D ბეჭდვას, ასე რომ შეიძლება ცოტა რთული იყოს. ამავე დროს, თქვენ უკვე საოცრად აკეთებთ ნივთების დამზადებას (თქვენ Instrucables– ზე ხართ, არა?).

ასე რომ, მოემზადეთ და…

მოდით გავაკეთოთ რობოტები!

ნაბიჯი 1: მასალები, ინსტრუმენტები და აღჭურვილობა

მასალები, ინსტრუმენტები და აღჭურვილობა
მასალები, ინსტრუმენტები და აღჭურვილობა
მასალები, ინსტრუმენტები და აღჭურვილობა
მასალები, ინსტრუმენტები და აღჭურვილობა

იმის გამო, რომ ეს პროექტი არ არის საჭირო ზუსტად ისე, როგორც მე გავაკეთე, მე შევიტან "საჭირო" სიას და მასალების "არჩევით" ჩამონათვალს, იმისდა მიხედვით თუ რამდენის აშენება გსურთ! არჩევითი ნაწილი მოიცავს 3D ბეჭდვას კორპუსზე სპიკერისთვის და ელექტრონიკისთვის.

საჭირო:

მასალები:

  • ღვინის ჭიქები - ნებისმიერი კარგია, მივედი გუდვილში და ვიპოვე იაფი, რაც უფრო თხელი მით უკეთესი
  • მავთული (სხვადასხვა ფერები სასარგებლო იქნება, მე გამოვიყენე 12 ლიანდაგი)
  • 6S 22.2v Lipo ბატარეა (თქვენ ნამდვილად არ გჭირდებათ მაღალი mAh, მე 1300 გამოვიყენე):

    hobbyking.com/en_us/turnigy-1300mah-6s-35c…

  • ბატარეის ერთგვარი კონექტორი. თუ თქვენ იყენებთ ზემოთ მოცემულს, ეს არის XT60:
  • შეკუმშვის დრაივერის სპიკერი - თქვენ გჭირდებათ რაიმე მაღალი მგრძნობელობის ნიშნით (~ 100 დბ):

    www.amazon.com/dp/B075K3P2CL/ref=psdc_1098…

  • არდუინოს თავსებადი მიკროფონი:

    www.amazon.com/Electret-Microphone-Amplifi…

  • არდუინო (Uno for souldering ან Nano for souldering):

    www.amazon.com/ELEGOO-Arduino-ATmega328P-W…

  • მბრუნავი კოდირება:

    www.amazon.com/Encoder-15%C3%9716-5-Arduin…

  • გარკვეული სახის ჩართვა/გამორთვა ასევე სასარგებლოა (მე ეს გამოვიყენე):

    www.amazon.com/Encoder-15%C3%9716-5-Arduin…

  • დააჭირეთ ღილაკებს:

    www.adafruit.com/product/1009

  • მინიმუმ 60 ვტ გამაძლიერებელი:

    www.amazon.com/KKmoon-TPA3118-Digital-Ampl…

  • 5v BEC არდუინოს ჩართვისთვის:

    www.amazon.com/Servo-Helicopter-Airplane-R…

ინსტრუმენტები / აღჭურვილობა:

  • სმენის დაცვა - არ ხუმრობთ, ეს ბიჭი დაახლოებით 130 დბ -ს აღწევს, რამაც შეიძლება მყისიერი ზიანი მიაყენოს
  • გასაყიდი რკინა
  • Solder
  • მავთულის სტრიპტიზორები
  • ქვიშის ქაღალდი
  • ცხელი წებოს იარაღი

არ არის საჭირო:

ქვემოთ მოყვანილია მხოლოდ იმ შემთხვევაში, თუ თქვენც გსურთ თქვენი პროექტის სრული 3D ბეჭდვით კორპუსის გაკეთება

მასალები:

  • ტყვიის კონექტორები:
  • მავთულის სითბოს შემცირება:
  • ბევრი ABS ძაფები - მე არ გავზომე რამდენად გამოვიყენე, მაგრამ არის ორი ~ 24 საათიანი ანაბეჭდი და ერთი ~ 8 სთ ბეჭდვა
  • M3 ხრახნებისა და ჭანჭიკების ასორტიმენტი - ტექნიკურად თქვენ ალბათ შეგიძლიათ გამოიყენოთ ნებისმიერი ზომა, თუ გსურთ ხვრელების გაბურღვა. მაგრამ მე დიზაინი გავაკეთე M3 ხრახნების გათვალისწინებით.

ინსტრუმენტები / აღჭურვილობა:

  • 3D პრინტერი - მე გამოვიყენე Ultimaker 2
  • Dremel ასევე სასარგებლოა, თუ პრინტერი თქვენს ნაწილს ტოვებს.

ნაბიჯი 2: შექმენით საცდელი წრე

შექმენით საცდელი წრე
შექმენით საცდელი წრე
შექმენით საცდელი წრე
შექმენით საცდელი წრე
შექმენით საცდელი წრე
შექმენით საცდელი წრე

შემდეგ ჩვენ გვსურს სქემის აშენება ჯამპერის მავთულისა და დაფის გამოყენებით, სავარაუდოდ!

ტექნიკურად ეს ნაბიჯი არ არის საჭირო, თუ გსურთ პირდაპირ წასვლა არდუინო ნანოზე, მაგრამ მე გირჩევთ, რომ ასეც მოიქცეთ. ეს კარგი გზაა თქვენი ყველა ნაწილის შესამოწმებლად და დარწმუნდით, რომ იცით სად მიდის ყველაფერი, სანამ ამ ყველაფერს ჩაკეტავთ მცირე დახურულ სივრცეში.

პირველ გამოქვეყნებულ სურათზე, მე არ მაქვს დამაგრებული გამაძლიერებლის დაფა ან დენის გადამრთველი, მე მხოლოდ 9 და 10 ქინძისთავები დავუკავშირე მინი საცდელ დინამიკს, მაგრამ გირჩევთ, ყველაფერი გააერთიანოთ გადასვლამდე.

წრეზე:

არდუინოს ჩართვისთვის, შეაერთეთ იგი თქვენს კომპიუტერში USB კაბელის გამოყენებით. თუ რამე არ არის ნათელი, მე ვაპირებ დეტალურად განვიხილო თითოეული ნაწილი ქვემოთ.

დავიწყოთ კვების ბლოკით:

ბატარეის დადებითი დასასრული გადადის გადამრთველში. ეს გვაძლევს საშუალებას ჩავრთოთ და გამოვრთოთ ჩვენი წრე ისე, რომ საერთოდ არ გამოვართვათ ქსელი ან რაიმე ძალიან გიჟური გავაკეთოთ, რომ საჭიროების შემთხვევაში ჩართოთ ჩართვა. ფაქტიურ გადამრთველს, რომელსაც მე ვიყენებდი, მხოლოდ ორი ტერმინალი ჰქონდა და გადამრთველმა ან დააკავშირა ისინი ან დატოვა ღია.

დადებითი დასასრული შემდეგ გადადის გადამრთველიდან გამაძლიერებლის დაფაზე.

ბატარეის უარყოფით ბოლოს არ სჭირდება გადამრთველის გავლა. მას შეუძლია პირდაპირ ამპერის დენის ბოლომდე გადასვლა.

შემდეგი, გამაძლიერებლის დაფა:

გამაძლიერებელი დაფის აქვს ოთხი კომპლექტი ქინძისთავები, თითოეული კომპლექტი აქვს ორი გამავალი. მე არ ვიყენებ ამ დაფის 'მუნჯი' ფუნქციას, ასე რომ მოგერიდებათ არ ინერვიულოთ ამაზე. მე უკვე აღვწერე ზემოთ, რომ Power + და Power - უნდა მიიღოთ პირდაპირ 22.2 ვ ბატარეიდან. გამომავალი, თქვენ უნდა დააკავშიროთ ეს პირდაპირ შეკუმშვის დრაივერზე. არ აქვს მნიშვნელობა რომელი ლიდერი მიდის რომელ პინზე, მაგრამ ზოგჯერ მათი გადართვა ხდის უკეთეს ხმას. დაბოლოს, შეყვანა + და შეყვანა - გადადით Arduino– ს მე –10 და მე –9 პუნქტებზე, ისევ და ისევ, წესრიგს სულაც არ აქვს მნიშვნელობა.

მიკროფონი:

მიკროფონი არის ძალიან მარტივი. Vcc იღებს 5v arduino– დან, GND გადადის GND– ზე Arduino– ზე და OUT მიდის A0 pin– ზე Arduino– ზე.

ღილაკები:

თუ თქვენ ოდესმე იყენებდით ღილაკებს Arduino– ზე, შეიძლება ოდნავ დაბნეული იყოთ რეზისტორის გარეშე დაკავშირებული ღილაკების დანახვაში. ეს იმიტომ ხდება, რომ მე მაქვს დაყენებული, რომ გამოვიყენო შიდა გამყვანი რეზისტორები, რომლებიც Arduino- ს შიგნით არის. ეს ძირითადად აიძულებს მათ ყოველთვის წაიკითხონ როგორც მაღალი სანამ არ დააჭერთ ღილაკს, შემდეგ ისინი კითხულობენ როგორც დაბალი. ეს მხოლოდ გაყვანილობას აადვილებს და ამარტივებს. თუ გსურთ მეტი ინფორმაცია, გადახედეთ ამ ინსტრუქციას:

www.instructables.com/id/Arduino-Button-wi…

ღილაკი, რომელიც მიკროფონიდან კითხულობს, იქნება დაკავშირებული პინ 6 -თან და ღილაკი, რომელიც რეალურად ეუბნება სპიკერს ხმის ამოღების დაწყება არის პინ 5 -ზე. დანარჩენი ორივე ღილაკი ორივე ღილაკზე არის მიერთებული GND- თან.

მბრუნავი კოდირება:

მბრუნავი კოდირება, რომელსაც მე ვიყენებ, ასევე შეიცავს მის შიგნით ჩამონტაჟებულ ღილაკს. ასე რომ, თქვენ შეგიძლიათ რეალურად დააჭიროთ ციფერბლატს და ის იკითხება როგორც ღილაკის დაჭერა.

გაყვანილობა შემდეგია: GND Arduino GND, + Arduino + 5v, SW to pin 4, DT to pin 3, CLK to pin 2

თუ გსურთ მეტი ინფორმაცია იმის შესახებ, თუ როგორ მუშაობს მბრუნავი კოდირება, გადახედეთ ამ ბმულს:

howtomechatronics.com/tutorials/arduino/ro…

და ეს ყველაფერი წრედისთვის!

ნაბიჯი 3: ტესტირების კოდი

სატესტო კოდი
სატესტო კოდი

ახლა დროა ატვირთოთ კოდი თქვენს არდუინოში

თქვენ შეგიძლიათ გადმოწეროთ ჩემი რეპო GitHub– ზე, რომელსაც აქვს ყველა საჭირო ფაილი:

ან, მე მხოლოდ GlassGun.ino ფაილი ავტვირთე ამ ნაბიჯის ბოლოში

ახლა მოდით ვისაუბროთ იმაზე, თუ რა ხდება. პირველ რიგში, მე ვიყენებ რამდენიმე სხვადასხვა ბიბლიოთეკას ამ პროექტში, რომლის გადმოტვირთვაც გჭირდებათ. ბიბლიოთეკები არის მოდულური კოდის ვინმესთვის გაზიარების საშუალება, რაც მათ საშუალებას მისცემს მათ პროექტში რაღაცის ინტეგრირების მარტივი გზა.

მე ვიყენებ ამ ყველაფერს:

  • LinkedList -
  • ToneAC -
  • მბრუნავი -

თითოეულ მათგანს აქვს ინსტრუქცია, თუ როგორ უნდა დააინსტალიროთ თქვენს Arduino დირექტორიაში. თუ გჭირდებათ მეტი ინფორმაცია Arduino ბიბლიოთეკების შესახებ, გადახედეთ ამ ბმულს:

www.arduino.cc/en/Guide/Libraries

ეს დროშა საშუალებას აძლევს მომხმარებელს ადვილად გამორთოს ან ჩართოს ეკრანის ბეჭდვა სერიულ ხაზზე:

// გამართვის დროშა

ლოგიკური printDebug = ჭეშმარიტი;

ეს ინიციალებს ცვლადებს, რომლებიც გამოიყენება სიხშირის დასაფიქსირებლად და ყველაზე მეტად გამოსაჩენად:

// Frequency captureLinkedList freqData; დაკავშირებული სია NOT_DATA; int modeHold; int modeCount = 1; int modeSubCount = 1; ლოგიკური gotData = ყალბი; ლოგიკური badData = ჭეშმარიტი;

ეს ადგენს მნიშვნელობებს დინამიკზე გამოსვლისთვის. freqModifier არის ის, რასაც ჩვენ ვამატებთ ან ვაკლებთ გამომავალს მბრუნავი კოდირების დარეგულირების საფუძველზე. modeValue არის ის, რაც ინახავს ჩანაწერს მიკროფონიდან. საბოლოო გამომავალი არის მხოლოდ modeValue + freqModifier.

// სიხშირის გამოსხივება

int freqModifier = 0; int modeValue;

ადგენს მბრუნავ კოდს ბიბლიოთეკის გამოყენებით:

// დარეგულირება მბრუნავი კოდირების გზით

int val; #განსაზღვრეთ კოდირების ღილაკი ღილაკი 4 #განსაზღვრეთ კოდირება პინ 2 2 #განსაზღვრეთ კოდირება პინბ 3 მბრუნავი r = მბრუნავი (კოდის მიმღები პინა, კოდირება პინბ);

განსაზღვრავს ქინძისთავებს, რომლებსაც ღილაკები ერთვის:

// ღილაკები მიკროფონისა და დინამიკის გასააქტიურებლად

#განსაზღვრეთ დინამიკი ღილაკი 5 #განსაზღვრეთ მიკროფონი ღილაკი 6

ეს მნიშვნელობა გვიჩვენებს, თუ ჩაწერილი სიხშირე განსაკუთრებულად მაღალია თუ დაბალი:

// ინდიკატორის ცვლადების დაჭრა

ლოგიკური დაჭრა = 0;

გამოიყენება სიხშირის ჩაწერაში:

// მონაცემთა შენახვის ცვლადები

ბაიტი newData = 0; ბაიტი prevData = 0;

გამოიყენება სიხშირის რიცხვის ფაქტობრივი გაანგარიშებისას რხევების საფუძველზე:

// ხშირი ცვლადები

ხელმოუწერელი int ტაიმერი = 0; // ითვლის ტალღის პერიოდს ხელმოუწერელ int პერიოდს; int სიხშირე;

ახლა, კოდის ნამდვილ სხეულზე:

აქ ჩვენ ვაყენებთ მიკროფონისა და დინამიკის ღილაკებს, რომ არ გამოვიყენოთ რეზისტორი ღილაკზე დაჭერისას, როგორც ეს ადრე იყო აღწერილი საცდელი წრეში (დამატებითი ინფორმაცია: https://www.instructables.com/id/Arduino-Button-wi…) I ასევე დარეკეთ resetMicInterupt, რომელიც ძალიან დაბალ დონეზე აყენებს ქინძისთავებს, რომ მოუსმინოს A0 პინს ძალიან განსხვავებულ პერიოდში. მე გამოვიყენე ეს ინსტრუქცია იმის გასარკევად, თუ როგორ მივიღო სიხშირე ამ მნიშვნელობებიდან:

www.instructables.com/id/Arduino-Frequency…

void setup () {pinMode (13, OUTPUT); // led ინდიკატორის pin pinMode (მიკროფონის ღილაკი, INPUT_PULLUP); // მიკროფონის Pin pinMode (დინამიკის ღილაკი, INPUT_PULLUP); if (printDebug) {Serial.begin (9600); } resetMicInterupt (); } void resetMicInterupt () {cli (); // გათიშვის გათიშვა // ანალოგური pin 0 -ის უწყვეტი შერჩევის დადგენა // გასუფთავება ADCSRA და ADCSRB რეგისტრები ADCSRA = 0; ADCSRB = 0; ADMUX | = (1 << REFS0]; // მითითებული საცნობარო ძაბვა ADMUX | = (1 << ADLAR); // მარცხნივ გასწორება ADC მნიშვნელობა- ასე რომ ჩვენ შეგვიძლია წავიკითხოთ უმაღლესი 8 ბიტი ADCH რეგისტრიდან მხოლოდ ADCSRA | = (1 << ADPS2) | (1 << ADPS0]; // დააყენეთ ADC საათი 32 პრესკალერით- 16 მჰც/32 = 500 კჰც ADCSRA | = (1 << ADATE); // ავტომატური ჩახშობის ჩართვა ADCSRA | = (1 << ADIE); // შეწყვეტის ჩართვა გაზომვის დასრულებისას ADCSRA | = (1 << ADEN]; // ADC ADCSRA ჩართვა | = (1 << ADSC); // ADC გაზომვების დაწყება sei (); // შეწყვეტის ჩართვა} ISR (ADC_vect) {// როდესაც ახალი ADC მნიშვნელობა მზად არის prevData = newData; // შეინახეთ წინა მნიშვნელობა newData = ADCH; // მიიღეთ მნიშვნელობა A0 if (prevData = 127) {// თუ იზრდება და გადაკვეთს შუალედურ პერიოდს = ქრონომეტრს; // მიიღეთ პერიოდის ქრონომეტრს = 0; // გადატვირთეთ ტაიმერი} თუ (newData == 0 || newData == 1023) {// თუ დააჭერთ PORTB | = B00100000;/ /დააყენეთ პინი 13 მაღალი ჩართვა კლიპის ინდიკატორი led clipping = 1; // ამჟამად დაჭრა} ქრონომეტრი ++; // ქრონომეტრის მომატება 38.5 კჰც სიხშირით}

მე ვფიქრობ, რომ კოდის უმეტესი ნაწილი საკმაოდ მარტივია და საკმაოდ იკითხება, მაგრამ მე გამოვყოფ ზოგიერთ უფრო დამაბნეველ სფეროს:

ეს ნაწილი ძირითადად მოდის როტარის ბიბლიოთეკიდან. ყველაფერი, რაც ის ამბობს, არის ის, რომ თუ საათის ისრის მიმართულებით გადაადგილდით, გაზარდეთ freqModifer ერთით მაღლა, თუ არ ახვალთ, მაშინ აუცილებლად უნდა წახვიდეთ ქვემოთ, ასე რომ წაიღეთ freqModifier ერთით ქვემოთ.

ხელმოუწერელი char შედეგი = r.process (); // ნახეთ გადავიდა თუ არა მბრუნავი კოდირება

თუ (შედეგი) {firstHold = true; if (შედეგი == DIR_CW) freqModifier ++; // თუ საათის ისრის მიმართულებით ვიმოძრავეთ, გაზარდეთ, წინააღმდეგ შემთხვევაში შეამცირეთ სხვა freqModifier--; თუ (freqModifier 50) freqModifier = 50; if (printDebug) {Serial.print ("FreqMod:"); Serial.println (freqModifier); }}

ეს მომდევნო ნაწილი არის სადაც მე ვატარებ ჩემს ალგორითმს დატყვევებული სიხშირის მონაცემებზე, რათა შევეცადო და მივიღო ყველაზე თანმიმდევრული სიხშირის კითხვა ღვინის ჭიქიდან. პირველ რიგში, მე მოკლედ ვაჭერ მიკროფონის ღილაკს. ეს მოკლე ღილაკის დაჭერა მიკროფონიდან იღებს "ცუდ მონაცემებს". ეს უდრის ღირებულებებს, რომელთა იგნორირებაც გვინდა. ჩვენ ვიცავთ მათ, ასე რომ, როდესაც ჩვენ ვიღებთ "კარგ მონაცემებს", ჩვენ შეგვიძლია შევხედოთ მას და ამოვიღოთ ყველა ცუდი.

void getMode () {boolean doAdd = true // პირველი ღილაკის დაჭერა უნდა იყოს მოკლე, რომ მივიღოთ "ცუდი მნიშვნელობები" ან მნიშვნელობები, რომლებიც ჩვენ ვიცით, რომ არის ცუდი // ეს მონაცვლეობს "ცუდი მონაცემების" და "კარგი მონაცემების" ჩაწერას შორის, თუ (badData) {if (printDebug) Serial.println ("ცუდი მონაცემები:"); for (int j = 0; j <freqData.size (); j ++) {for (int i = 0; i <NOT_DATA.size (); i ++) {if (freqData.get (j) == NOT_DATA.get (ი)) {doAdd = ყალბი; შესვენება; }} if (doAddd) {NOT_DATA.add (freqData.get (j)); } doAdd = ჭეშმარიტი; } if (printDebug) {Serial.println ("-----"); for (int i = 0; i <NOT_DATA.size (); i ++) {Serial.println (NOT_DATA.get (i)); } Serial.println ("-------"); }}

აქ ჩვენ ვათვალიერებთ "კარგ მონაცემებს" და ამოვიღებთ ყველა იმ მონაცემს, რომელიც შეესაბამება "წინა მონაცემების ცუდ მონაცემებს"

როდესაც ჩვენ ამოვიღებთ ერთ ელემენტს სიიდან, ჩვენ უნდა დავბრუნდეთ ერთი ნაბიჯით ჩვენს გარე მარყუჟში (j--), რადგან წინააღმდეგ შემთხვევაში ჩვენ გამოვტოვებთ მნიშვნელობებს.

სხვა {

if (printDebug) Serial.println ("ცუდი მონაცემები არ არის:"); for (int j = 0; j <freqData.size (); j ++) {for (int i = 0; i <NOT_DATA.size (); i ++) {if (freqData.get (j) == NOT_DATA.get (ი)) {if (printDebug) {Serial.print ("ამოღებულია:"); Serial.println (freqData.get (j)); } freqData.remove (j); j--; შესვენება; }}} freqData.sort (minToMax); modeHold = freqData.get (0); modeValue = modeHold; for (int i = 0; i modeSubCount) {modeSubCount = modeCount; modeValue = modeHold; } modeCount = 1; modeHold = freqData.get (i); }} modeCount = 1; modeSubCount = 1; if (printDebug) {Serial.println ("--------"); Serial.println (modeValue); Serial.println ("---------"); } NOT_DATA.clear (); } if (badData) badData = false; სხვაგან badData = ჭეშმარიტი; freqData.clear (); }

ნაბიჯი 4: დაარეგულირეთ თქვენი მიკროფონი

დაარეგულირეთ თქვენი მიკროფონი
დაარეგულირეთ თქვენი მიკროფონი
დაარეგულირეთ თქვენი მიკროფონი
დაარეგულირეთ თქვენი მიკროფონი

ეს ალბათ ჩემთვის ერთ -ერთი უმძიმესი ნაბიჯი იყო, რადგან ამას ვაკეთებდი კოდის რედაქტირებასთან ერთად გამომავალი სწორი სიხშირის შესაქმნელად.

იმის გამო, რომ არდუინოს არ შეუძლია უარყოფითი ძაბვების წაკითხვა (ხმის ტალღების მსგავსად), მიკროფონში ჩაშენებული წრე ყველაფერს გარდაქმნის დადებით ძაბვად. ნაცვლად რამდენიმე მილივოლტი დადებითი და რამდენიმე მილივოლტი უარყოფითი, წრე ცდილობს შეცვალოს ის დადებითი 5 ვ და 0 ვ. თუმცა, მას ნამდვილად არ შეუძლია იცოდეს რამდენად ხმამაღალია თქვენი წყაროს აუდიო. ამის გამოსასწორებლად, ისინი მიკროსქემს უმატებენ პაწაწინა პოტენომეტრს (ხრახნი).

ეს საშუალებას გაძლევთ 'მორგოთ' თქვენი მიკროფონი ღვინის ჭიქების აუდიო დონეზე.

მაშ, როგორ მიაღწევ ამას სინამდვილეში?

თქვენ შეგიძლიათ თქვენი Arduino დააკავშიროთ თქვენს კომპიუტერს USB კაბელის საშუალებით, გახსენით სერიული მონიტორი Arduino რედაქტორის ზედა მარჯვენა ხატზე დაჭერით.

დააყენეთ ბაუდის მაჩვენებელი 9600 -ზე.

როდესაც თქვენ ატვირთავთ თქვენს კოდს Arduino– ში, თქვენ უნდა ნახოთ ყველა "printDebug" შეტყობინება ამ ახალ ფანჯარაში.

იმისთვის, რომ თქვენი მიკროფონი სწორად იყოს მორგებული, მე გირჩევთ მიიღოთ ტელეფონი თქვენს ტელეფონში ისეთი აპლიკაციით, რომელიც კითხულობს სიხშირეებით (როგორც ეს) და რეალურად გაარკვევთ რა არის თქვენი ჭიქის სწორი სიხშირე. ააფეთქეთ ჭიქა ღია აპლიკაციით, იპოვეთ სწორი სიხშირე, შემდეგ დაიწყეთ მიკროფონის მორგება, სანამ არ მიიღებთ საკმაოდ თანმიმდევრულ შედეგებს.

ასე რომ, პროცესი ასეთია:

  1. დაახურეთ ჭიქა სპექტრომეტრის აპლიკაციით და ნახეთ რა არის რეზონანსული სიხშირე
  2. ჩაწერეთ "ცუდი მონაცემები" თქვენს მიკროსქემზე სწრაფად ჩართული მიკროფონის ღილაკზე დაჭერით
  3. დაიჭირეთ მიკროფონის ღილაკი თქვენს მიკროსქემზე, ფაქტობრივი მიკროფონი მინასთან ახლოს და მინა მიამაგრეთ ხრახნით ან რამე
  4. შეხედეთ სერიულ მონიტორზე გამომავალს და ნახეთ ახლოს არის თუ არა სიხშირის ნამდვილ მნიშვნელობასთან
  5. ოდნავ დაარეგულირეთ პოტენომეტრის ხრახნი მიკროფონზე და გაიმეორეთ

თქვენ ასევე შეგიძლიათ გაუშვათ 'mic_test' სკრიპტი, რომელიც მუდმივად გაუშვებს მიკროფონს და გამოუშვებს ეკრანზე. თუ ასე მოიქცევით, თქვენ მოგიწევთ ხრახნიანი პოტენომეტრის გადაბრუნება, სანამ კოდი გადის, რათა ნახოთ სად არის საუკეთესო ადგილი მისთვის.

ნაბიჯი 5: გატეხე ჭიქა

გატეხე ჭიქა!
გატეხე ჭიქა!
გატეხე ჭიქა!
გატეხე ჭიქა!

დროა გავტეხოთ ძველი ჭიქა!

პირველ რიგში, დარწმუნდით, რომ ატარებთ ყურის დაცვას!

არსებობს ხელოვნება იმისთვის, რომ ყველაფერი ადგილზე დადგეს ისე, რომ ჭიქა გატეხილი იყოს.

  1. საჭიროა ღვინის ჭიქის ქვიშა
  2. თქვენ უნდა მიიღოთ სიხშირე სწორად
  3. თქვენ უნდა მიიღოთ კუთხე სწორად
  4. თქვენ უნდა დარწმუნდეთ, რომ თქვენი ღვინის ჭიქა არ კარგავს ძვირფას ვიბრაციულ ენერგიას შერყევისკენ

ამრიგად, ამის საუკეთესო გზა ვიპოვე:

პირველ რიგში, როგორც ვთქვი, მოაყარეთ ღვინის ჭიქის რგოლი. თუ ამას არ გააკეთებთ, შუშას არ აქვს საწყისი მოტეხილობის წერტილი და ვერასდროს შეძლებს ბზარის გაკეთებას. ყველაფერი რაც საჭიროა არის მსუბუქი ქვიშა, საკმარისია რამდენიმე მიკრო აბრაზიისთვის.

დარწმუნდით, რომ თქვენი სიხშირე სწორია, სიხშირის ჩაწერის შემდეგ ჭიქაში ჩალის ან ზიპის სამაგრის ჩადებით. ეს გაძლევთ საშუალებას ნახოთ, როდის ხდება სიხშირის გამოჩენა და ყველაზე მეტად ვიბრაცია.

მეორეც, შეეცადეთ მომხსენებელი მიაწოდოთ შუშის ყველაზე ფართო ნაწილს, სანამ მინა კისრისკენ დაიხრება.ეს არის ის, სადაც ის მიდრეკილია გამოიწვიოს ჩალის ან ფაფის ჰალსტუხი, რომ გაიზარდოს ბევრი, ასე რომ თქვენ უნდა გქონდეთ საშუალება ნახოთ რომელი ნაწილი საუკეთესოდ მუშაობს.

ბოლოს, ჭიქას მაგიდაზე მივაწებე. თუ შუშას აქვს შესაძლებლობა ვიბრირება მოახდინოს მთელ მინაზე და გადააბიჯოს მაგიდაზე, ის კარგავს ვიბრაციას, რომელიც სხვაგვარად მიდის შუშის რხევის გაკეთებაში. ამრიგად, ჩემი რეკომენდაციაა ჭიქა მაგიდაზე მიამაგრეთ სკოჩის ლენტით. თუ ძალიან ბევრს მიამაგრებთ, ის საერთოდ ვერ შეძლებს ვიბრირებას!

გაატარეთ გარკვეული დრო მასთან ერთად, რომ სცადოთ და მიიღოთ დონე ზუსტად და დარწმუნდით, რომ ჩაწერთ მას, რათა აჩვენოთ ყველა თქვენს მეგობარს!

ნაბიჯი 6: (სურვილისამებრ) Solder

(სურვილისამებრ) Solder
(სურვილისამებრ) Solder
(სურვილისამებრ) Solder
(სურვილისამებრ) Solder
(სურვილისამებრ) Solder
(სურვილისამებრ) Solder

ასე რომ, თქვენ გადაწყვიტეთ, რომ ყველაფერი გქონდეთ? კარგი, კარგი შენთვის! მე ნამდვილად მსიამოვნებდა ამის გაკეთება!

ისე, ჯერ პირველი. სქემა ძირითადად იგივეა, არსებობს მხოლოდ რამდენიმე დახვეწილი განსხვავება.

  1. თქვენ შედუღდებით პირდაპირ სპიკერის სადენებზე
  2. თქვენ დაამატებთ Bullet კონექტორებს სპიკერზე
  3. თქვენ დაამატებთ BEC– ს Arduino Nano– ს გასაძლიერებლად

ერთი სწრაფი შენიშვნა, თქვენ არ გსურთ შედუღება ძაბვის მთავარ გადამრთველზე, სანამ საქმეში არ იქნება. ეს არის იმის გამო, რომ გადამრთველი უნდა იკვებებოდეს ზემოდან, სხვა ნაწილებისგან განსხვავებით, რომლებიც ქვემოდან შეიძლება იყოს ჩასმული. თუ ჩამრთველზე შეაერთებთ სანამ საქმეშია, თქვენ ვერ შეძლებთ მის ჩადებას.

ჩვენი ბატარეის დადებითი დასასრული ჯერ გადადის გადამრთველზე, BEC– ზე. ეს ამცირებს ჩვენს ძაბვას 22.2 ვ - დან 5 ვ - მდე, რათა უზრუნველყოს არდუინოს ენერგია. ბატარეის დადებითი დასასრული ასევე მიდის ჩვენი გამაძლიერებლის Power+ ბოლომდე. ეს უზრუნველყოფს 22.2 ვ პირდაპირ ამპერს.

BEC ქვედა ძაბვის დასასრული მიდის + დან + 5v- მდე Arduino– ზე, და - GND– მდე Arduino– ზე.

მიზანშეწონილია გამოიყენოთ მავთულის იზოლაცია ტყვიის კონექტორებზე, ისე, რომ ისინი არ შეეხოთ ერთმანეთს და შეწყვიტონ წრე.

გარდა ამისა, თქვენ არ იქნება soldering არაფერს კონკრეტულად. თქვენ უბრალოდ ხვდებით ჰაერში, ეს არის ტექნიკა, რომელსაც მე "ჰაერის შედუღებას" ვუწოდებ. ძნელია თავიდან აიცილო, მაგრამ ცოტა ხნის შემდეგ ეჩვევი.

შედუღების დასრულების შემდეგ, კარგი იდეაა აიღოთ ცხელი წებო და დაფაროთ ნებისმიერი მავთული ან ნაწილი. ცხელი წებო ქმნის შესანიშნავ იზოლატორს, რომელიც შეიძლება გამოყენებულ იქნას ნებისმიერ ელექტრონიკაზე. ის გამოდის გარკვეული ძალისხმევით, რაც ხდის ხელახლა ფორმირებას, თუ არეულობ. მაგრამ აუცილებლად შეეცადეთ დაფაროთ ღილაკის ნებისმიერი ფეხი, სათაურები ან სხვა დაუცველი ნაწილები, ისე რომ არაფერი გამოგრჩეთ.

ნაბიჯი 7: (სურვილისამებრ) დაბეჭდეთ საცხოვრებელი

(სურვილისამებრ) საბეჭდი საცხოვრებელი
(სურვილისამებრ) საბეჭდი საცხოვრებელი
(სურვილისამებრ) საბინაო ბეჭდვა
(სურვილისამებრ) საბინაო ბეჭდვა
(სურვილისამებრ) საბეჭდი საცხოვრებელი
(სურვილისამებრ) საბეჭდი საცხოვრებელი
(სურვილისამებრ) საბინაო ბეჭდვა
(სურვილისამებრ) საბინაო ბეჭდვა

ამ პროექტის დასაბეჭდად არის სამი ფაილი:

  1. წინა ნაწილი, რომელსაც აქვს დინამიკი და მიკროფონი
  2. შუა ბიტი, რომელსაც აქვს ყველა ელექტრონიკა, ღილაკები და ბატარეა
  3. ბატარეის საფარი

ნაწილები ყველა ერთად 48 საათის განმავლობაშია დაბეჭდილი Georgia Tech– ის Ultimaker 2– ზე. დარწმუნდით, რომ ბეჭდავთ მხარდაჭერით, რადგან ამ ბეჭდვაზე არის დიდი გადახურვა.

ყველა ნაწილი შექმნილია იმისთვის, რომ იყოს საკმაოდ მჭიდროდ მორგებული, ასე რომ მათ შეიძლება მოითხოვონ ქვიშა ან მსუბუქი დრემელი, რომ სწორად მიიღონ. მე არ მქონდა არანაირი პრობლემა იმ აპარატებთან, რომლებსაც მე ვიყენებდი.

ნაბიჯი 8: (სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის

(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის
(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის
(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის
(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის
(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის
(სურვილისამებრ) საღებავი - დამატებული სიგრილისთვის

ვფიქრობდი, რომ მაგარი იქნებოდა ბეჭდვისთვის საღებავის დამატება. თავისუფლად გააკეთე ის, რაც გგონია, მაგარია შენივე ფერებით. მე მქონდა აკრილის საღებავი და ეს კარგად მუშაობდა. ფირზე, რომელიც მე გამოვიყენე, არ ჩანდა საღებავი ისე, როგორც მე ვიმედოვნებდი, ასე რომ, ცოტაოდენი სისხლდენა მოხდა, მაგრამ მე ვფიქრობ, რომ ყველაფერი კარგად იყო.

ნაბიჯი 9: (სურვილისამებრ) შეკრება

(სურვილისამებრ) შეკრება
(სურვილისამებრ) შეკრება
(სურვილისამებრ) შეკრება
(სურვილისამებრ) შეკრება
(სურვილისამებრ) შეკრება
(სურვილისამებრ) შეკრება

ახლა, როდესაც ყველა ნაწილი დაბეჭდილია, შედუღება მყარია და კოდი მუშაობს, დროა ეს ყველაფერი ერთად მოვათავსოთ.

აღმოვაჩინე, რომ უადვილესი იყო არდუინოს კედლის გვერდით დაყენება, შემდეგ გამაძლიერებლის დაფას შეეძლო ბოლოში ჯდომა.

ღილაკები შექმნილია შეკუმშვის შესაფერისად. ამრიგად, მათ უბრალოდ უნდა შეეძლოთ იძულებით აიყვანონ თავიანთ უბნებში და დარჩნენ იქ. თუმცა, თუ თქვენს პრინტერს არ აქვს ამგვარი შემწყნარებლობა, მოგერიდებათ აიღოთ ფირის ნაჭერი ან ცხელი წებო, რომ დააფიქსიროთ ისინი თავიანთ სლოტებზე.

მბრუნავ კოდირებას აქვს თავისი ხრახნი, ასე რომ თქვენ შეგიძლიათ უბრალოდ გაამაგროთ იგი ზემოდან იმ კაკლით, რომელსაც ის უზრუნველყოფს.

დენის გადამრთველი უნდა იყოს ჩასმული ზემოდან. შეიძლება ცოტა ძალისხმევა დასჭირდეს მის შეყვანას, მაგრამ ლამაზად უნდა მოერგოს მას შემდეგ რაც ის სლოტშია.

როგორც კი ესენი ადგილზეა, ჯერ მიკროფონი უნდა ჩადოთ, შემდეგ - დინამიკი. მე ასევე აღმოვაჩინე, რომ მიკროფონს ხრახნი არ სჭირდებოდა, რადგან ხვრელის შეკუმშვამ და მის ზემოთ მყოფმა დიდებულმა ლამაზად შეინარჩუნა იგი.

ბატარეა მჭიდროდ უნდა მოთავსდეს უჯრის უკანა ნაწილში, მაგრამ მე არანაირი პრობლემა არ მქონია მის მოთავსებაში.

მე ასევე აღმოვაჩინე, რომ მხოლოდ M3 ხრახნის დაყენება ორივე ზომის ბატარეის საფარის ხვრელებზე გვერდებზე საკმარისი იყო იმისათვის, რომ ის საერთოდ დარჩენილიყო თხილის გარეშე. მე თავდაპირველად ვგეგმავდი ერთი მართლაც გრძელი ხრახნის მიღებას, რომელიც გადიოდა მეორე ხვრელში, მაგრამ მე არ მინდოდა მისი პოვნა ინტერნეტში და თხილის გარეშე ხრახნი კარგად მუშაობდა.

ნაბიჯი 10: (სურვილისამებრ) კვლავ გატეხეთ მინა

Image
Image

თავისუფლად გაერთო ამ მომენტში შენს ირგვლივ არსებული ყველა დამსხვრეული შუშის დიდებაში. ამოისუნთქე, შენ მოახერხე. ყნოსეთ ნამსხვრევები, როდესაც ისინი დაფრინავენ თქვენს გარშემო.

ახლა თქვენ გაქვთ სრულად მომუშავე, ხელისგული, უზადოდ შემუშავებული, მინის დამამსხვრევი აუდიო ქვემეხი. თუ ვინმე მოვიდა თქვენთან ღვინის ჭიქით, მოგერიდებათ ეს ცუდი ბიჭი გამოაგდოთ და უბრალოდ დაარღვიოთ ეს ნივთი მათ თვალწინ. სიმართლე გითხრათ, თქვენ ალბათ დაარღვევთ მათ ყურებს, სანამ ჭიქა არ დაიმსხვრევა, მაგრამ არა უშავს, ნებისმიერ შემთხვევაში ისინი ქმედუუნარო არიან.

სერიოზული შენიშვნის მიუხედავად, მადლობა, რომ დრო დაუთმეთ ჩემი პატარა პროექტის შესაქმნელად. თუ თქვენ გაქვთ რაიმე გამოხმაურება ან გაუმჯობესება, რომლის გაკეთებაც გსურთ, შემატყობინეთ! მე უფრო მეტად ვარ მოსმენილი!

და ბოლოჯერ…

მოდით გავაკეთოთ რობოტები!

აუდიო კონკურსი 2018
აუდიო კონკურსი 2018

მეორე ადგილი აუდიო კონკურსში 2018

გირჩევთ: