Pro mini pinout. Beskrivning av arduino pro minikort. Arduino Pro Mini - pinout och egenskaper. Schema och initial design. Lägger till Chinese Pro Mini till Arduino IDE

För inte så länge sedan stötte jag på behovet av att använda Arduino Pro Mini i mitt projekt och frågan uppstod direkt om hur man laddar upp en skiss i det. Naturligtvis säljs olika UART-adaptrar med hjälp av vilka detta problem snabbt kan lösas, men i det ögonblicket fanns inte en sådan adapter till hands.

Det vill säga enligt följande:

Nano -> Pro Mini

  • +5v -> Vcc
  • GND -> GND
  • D10 -> RST
  • D11 -> D11
  • D12 -> D12
  • D13 -> D13

Jag fick det ungefär så här:

Efter att allt är monterat och kontrollerat kan du ansluta Nano till datorn genom att blinka 7 gånger, båda korten är redo att användas.

Därefter, för att flasha firmwaren, måste vi se till att när vi ställer in kortet som ska flashas och programmeraren använder vi samma porthastigheter, och tar hastigheten från skissen som standard. För brädetypen måste du hitta filen boards.txt hans väg är relativ installerat program IDE är så här: Arduino/hardware/arduino/boards.txt. I det måste vi hitta parametrarna för Pro Mini-kortet, det ser ut ungefär så här:

Pro5v328.name=Arduino Pro eller Pro Mini (5V, 16 MHz) med ATmega328

Jag har en flashbar 5 volt mini med en ATmega328 mikrokontroller, men om du har en annan version av kortet måste du hitta avsnittet som motsvarar ditt kort.

Här måste du se till att hastigheten är rätt inställd:

Pro5v328.upload.speed=19200

Gå sedan till filen programmers.txt, dess sökväg Arduino/hardware/arduino/programmers.txt och se till att parametrarna är korrekta:

Arduinoisp.name=Arduino som ISP
arduinoisp.communication=seriell
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200

Efter att ha kontrollerat att alla parametrar är korrekta kan du starta IDE:n, om den kördes, starta om den. Detta är nödvändigt för att de nya parametrarna ska träda i kraft.

Efter att ha startat IDE måste vi ställa in vårt kort så att det blinkar och typen av programmerare "Arduino som ISP" i "Verktyg"-menyn:

Nu är vi alla redo för firmware. Välj önskad skiss, du kan välja något av exemplen för testning. Och nu särskild uppmärksamhet Jag ska berätta hur du blinkar den, den vanliga knappen för att blinka fungerar inte för oss eftersom den är avsedd för att blinka med en standardprogrammerare, dvs. i Arduino Nano och när vi trycker på den kommer vi helt enkelt att flasha Nano, vilket vi absolut inte behöver.

Det korrekta sättet att flasha Pro Mini är i "Arkiv"-menyn och den heter "Ladda med en programmerare", jag har IDE version 1.5.6-r2, där heter det här objektet "Ladda med en programmerare", tydligen finns det översättningssvårigheter i den här utgåvan, i version 1.0.5-r2 är allt bra.

Första gången kanske du inte kan flasha den, och i framtiden kan du få ett felmeddelande som detta:

Men oroa dig inte, om allt är korrekt monterat och lödat säkert, tryck bara på "Reset" på Pro Mini, vänta ett par sekunder och kortet kommer att blinka.

Tack för din uppmärksamhet, det var allt för nu.

– en kompakt version av Arduino-plattformen, designad för att bygga alla typer av projekt som inte är stora i storlek. Plattformen är 100% kompatibel med andra Arduino-plattformar, som t.ex Arduino UNO, men mycket mer kompakt än den. I den här artikeln kommer jag att granska den kinesiska analogen av Arduino Pro mini, berätta hur det skiljer sig från originalet, hur det här kortet skiljer sig från andra Arduino-plattformskort och också berätta hur du ansluter det till en dator för att ladda upp en skiss Gillar det. Slutligen, låt oss se till att tavlan fungerar med "blinkande" skissen som exempel.

Jag köpte den här analogen av Arduino Pro mini på Aliexpress för $1,30, medan originalkortet på tillverkarens webbplats kostar €13. Skillnaden i pris är den första största skillnaden mellan den kinesiska analogen och originalet.

Skivan kom i en antistatisk påse. Satsen innehöll även kontaktkuddar.

Som jämförelse är toppbrädet den ursprungliga Arduino Pro mini, nedan är min kinesiska motsvarighet. När det gäller antal och placering av kontakter är tavlan identisk med originalet, förutom kontakterna A4, A5, A6 och A7. På originaltavla Dessa kontakter är placerade i mitten, på den analoga är de till vänster.

För att få en visuell uppfattning om storleken på brädan kommer jag att visa den bredvid dess kinesiska motsvarighet Arduino UNO. Pro mini kunde minskas i storlek genom att ta bort USB-kontakt, styrelse matchande kretsar med USB uttag, togs även strömkontakten bort. Den kinesiska analogen är 100% kompatibel med alla moduler, drivrutiner, sensorer som fungerar med originalversionen.

Det ursprungliga moderna Arduino Pro minikortet är baserat på en mikrokontroller ATmega328, på samma sätt som Arduino UNO. Mer tidiga modeller detta kort byggdes på en mikrokontroller ATmega168.

Kinesiska analoger till Arduino Pro mini på det här ögonblicket byggs som ATmega328, och igen ATmega168. Detta är den andra skillnaden mellan originalet och dess analoga. Ett kort baserat på ATmega168 kommer att kosta mindre än ett baserat på ATmega328. Den största skillnaden mellan dessa kontroller är att ATmega328 innehåller dubbelt så mycket minne ombord som ATmega168.

Skillnader mellan mikrokontroller

ATmega168

ATmega328

16 KB

Men detta betyder inte att det inte kommer att vara möjligt att bygga ett projekt på ATmega168 som utvecklats på en bräda med en ATmega328, eftersom 16 KB kommer att räcka för många skisser. Ändå, om du behöver dubbelt så mycket minne, läs kortets beskrivning innan du köper. När jag köpte min kinesiska motsvarighet valde jag $1,30-brädet med ATmega168 istället för $1,93-brädet med ATmega328. Som ni ser kan vi här även spara på köp.

Det ursprungliga Pro minikortet tillverkas med två strömalternativ: 5 och 3,3 volt. För versionen som arbetar från 3,3 volt arbetar mikrokontrollern med en frekvens på 8 MHz, för 5 volt-versionen - med en frekvens på 16 MHz. Kinesiska analoger produceras också i 2 versioner. Mitt kort går på 5 volt.
Visuellt kan styrenhetens driftsfrekvens bestämmas av kvartsen som är installerad på kortet; om det är i ett stort fall kan du tydligt se frekvensen vid vilken den fungerar: 8 eller 16 MHz.

Fragment av skivor med kvarts som arbetar vid olika frekvenser.

Om strömförsörjning för Arduino Pro mini.

GND-, VCC- och RAW-stiften används för att driva kortet.
GND- detta är minuseffekten (jord).
VCC– används för att mata 3,3 eller 5 volt, beroende på kortversion. Denna kontakt levereras strikt med den spänning som kortet är designat för. Spänningen från denna kontakt går direkt till mikrokontrollern, om den är högre än nödvändigt kan den senare misslyckas.
Om du ska driva kortet med hög spänning, ska "+" strömförsörjningen anslutas till kontakten . Denna kontakt kan mata upp till 12 V, oavsett vilken spänning kortet är konstruerat för. Spänningen från denna kontakt tillförs en spänningsstabilisator, som omvandlar den till det önskade värdet, och först därefter tillförs styrenheten.

Om det blir så att du köpt ett kort och inte vet vilken spänning den är avsedd för, applicera 5 volt på RAW-kontakten och mät spänningen vid VCC-kontakten. Om kortet är konstruerat för 3,3 volt, kommer motsvarande spänning att vara på VCC, om det är 5 volt vid VCC, så är kortet 5 volt.

Pro minis digitala och analoga utgångar motsvarar samma antal utgångar som UNO-kortet: 14 digitala och 6 analoga. Kontakterna A4 (SDA) och A5 (SCL) används för att ansluta olika enheter via I2C-buss.

Om Arduino Pro mini firmware.

Efter att ha blivit ett av de minsta brädorna på Arduino-plattformen fick Pro mini-kortet en nackdel - det är omöjligt att flasha brädet utan hjälp utifrån. Jag ska berätta allt för dig möjliga sätt ladda upp skisser till Pro mini.

Firmware för Arduino Pro mini med Arduino UNO-kort.

Detta är inte det enklaste sättet, eftersom inte alla har ett UNO-kort och det är inte tillrådligt att köpa det specifikt för blinkande Pro-minikort. Men eftersom jag har en kinesisk analog till UNO kommer jag att börja med den här metoden. För att implementera denna metod måste en drivrutin installeras på UNO-kortet och numret på COM-porten som detta kort är anslutet till måste fastställas. Hur man gör detta beskrivs i artikeln om den kinesiska analogen av Arduino UNO.

Vi kopplar brädorna som på bilden. Slutsatser GND, TX Och RX koppla ihop med liknande. Slutsats " VCC"på Pro minikortet ansluter vi till" 5V" eller " 3V3"på UNO-styrelsen. Om du har en 5-voltsversion av Pro mini, anslut den till "5V"-uttaget, som i min version. Om versionen är 3-volt, anslut till "3V3" på UNO-kortet. Slutsats ÅTERSTÄLLA på UNO-kortet ansluter vi till stiftet DTR på Pro minikortet. På originalkortet utgången DTR betecknas som GRN, i allmänhet är det samma sak.

När allt är uppkopplat startar vi Arduino IDE.



Välj tavlan där du vill bädda in skissen:« Verktyg» - « Betala:" och välj din styrelse, i det här fallet är det "Arduino Pro eller Pro Mini».

Eftersom Pro Mini-kort kan använda olika mikrokontroller (ATmega168 eller ATmega328), såväl som olika matningsspänningar (3.3) v eller 5v ), välj din konfiguration: " Verktyg» - « CPU:"V i detta exempel jag väljer " ATmega168 (5 V, 16 MHz)».

Välj porten som kortet är anslutet tillUNO: « Verktyg» - « Hamn:» i mitt fall är det "COM7».

Låt oss försöka ladda upp den första skissen och se till att tavlan fungerar. Välj skissen " Blinka ", vars betydelse är att blinka lysdioden inbyggd i kortet: " Fil» - « Prover» - « 01. Grunderna» - « Blinka».

Använda knapparna " Kolla upp"och" Ladda"Skissen kontrolleras för fel och laddas på tavlan. Om det inte finns några fel kommer den blå lysdioden att börja blinka på Pro Mini-kortet.

Du kan leka med värdena i skissen och ändra tiden lysdioden lyser och tiden lysdioden är släckt, fylla på skissen igen och se att lysdioden blinkar annorlunda.

Firmware för Arduino Pro mini med en USB till TTL-adapter.

Jag har redan pratat om en av dessa adaptrar på PL2303-chippet, nu är det dags att prova det i praktiken. Det finns två versioner av denna adapter, en utan GRN (DTR)-kontakt, som min, och den andra med denna kontakt. De som har kontakt kostar minst dubbelt så mycket som de utan kontakt.

Om du använder en adapter utan en GRN (DTR) kontakt, anslut den till Pro mini som på bilden.

Om du har en 3-volts Pro mini-version måste kortets VCC-stift anslutas till 3V3-stiftet på USB-adaptern.

När allt är anslutet, starta Arduino IDE. Vi väljer kortversion, processor och port, väljer "Blink"-skiss, allt är detsamma som i exemplet ovan med UNO.

För att fylla skissen behöver du:
1. Klicka på " Ladda».
2. Processen med att sammanställa skissen kommer att börja, som kan ses av inskriptionen " Skisssammanställning...».
3. Så snart denna inskription ändras till " Läser in...».
4. Tryck kort på knappen på Pro minikortet ÅTERSTÄLLA.
5. Skissen kommer att laddas upp till tavlan och du kommer att kunna se inskriptionen " Avlastad"och av den blinkande lysdioden på kortet.

Om du råkar ha en USB till TTL-adapter i dina händer, med DTR-stiftet (aka GRN, RESET), anslut det till motsvarande RESET-stift på Pro minikortet. I det här fallet, när du laddar upp en skiss, behöver du inte trycka på RESET-knappen; tavlan kommer att återställa sig själv.

Denna adapter, precis som PL2303, låter dig flasha ett Arduino-kort. Anslutningsschemat är som följer:

Det finns även andra USB-adaptrar för att flasha Arduino Pro mini-firmware, till exempel på FT232-chippet, men på grund av att denna adapter är dyrare tar jag inte hänsyn till det.

Firmware för Arduino Pro mini med CH341A programmerare.

Programmeraren på CH341A-chippet kan arbeta i UART-läge, vilket betyder att den kan flasha en Arduino Pro mini.

Programmeraren kan presenteras i olika visuella mönster, den största skillnaden är priset och närvaron av ytterligare kontakter. Bland dessa kontakter kan till exempel en extra +5V kontakt dirigeras. Den jag köpte hade inte den här kontakten, jag var tvungen att löda den på kortet för att få denna spänning.

För att använda denna programmerare som en UART-adapter måste du öppna kontakterna P/S.

För att ansluta till Pro mini behöver du kontakter på programmeraren: Tx, Rx, GND Och +5V. En annan funktion hos denna programmerare är att det finns en kontakt ombord DTR, för att ansluta till Pro minikortet, behöver du inte trycka på en knapp Återställa, när du fyller i skissen. För att aktivera den här kontakten måste du använda kontakten MOSI, i UART-läge fungerar det som DTR.

I min version av programmeraren matades inte +5V-kontakten ut, jag var tvungen att ta denna spänning från stabilisatorbenet. Den slutliga anslutningen är som följer:

Pro mini CH341A
Tx Rx
Rx Tx
DTR MOSI
GND GND
VCC +5V

Ladda ner drivrutinen: Yandex disk MEGA Cloud mail@ru

Efter installation av drivrutinen visas en virtuell COM-port i Enhetshanteraren. Fyllningsskisser sker på samma sätt som genom PL2303 / CH340G-adaptrarna, med den enda skillnaden att du inte behöver trycka på knappen Återställa.

Det bör noteras att denna programmerare endast kan anslutas till 5 volt Arduino-brädor eftersom den använder 5 voltsnivåer! Detsamma gäller andra enheter som kräver en UART-adapter.

Firmware för Arduino Pro mini via COM-port.

Det kommer inte att vara möjligt att direkt flasha kortet via COM-porten, eftersom COM-porten och Pro mini har olika logiska nivåer. För att samordna dem måste du använda en adapter på MAX232-chippet. Själva chippet är inte dyrt, men jag vet inte om det är värt besväret för Pro firmware minimontering av en sådan adapter, om priset inte är billigare än att köpa en USB-adapter för .

Jag presenterar i alla fall diagrammet.

För att vara säker på att den här metoden fungerar var jag tvungen att montera den här kretsen själv på en brödbräda. Betalning pågår...

De flesta moduler som säljs som delar av Arduino-satser är ett kort med en linjär stabilisator och inskriptionen: "ingångsspänning från 3 till 5 volt", och mikrokretsarna själva som utför modulernas arbete drivs ofta av en spänning på 3,3V, och kan ibland arbeta med att sänka den till 3 eller 1,8V.

Denna modul hjälper till att optimera storleken och öka driftstiden för min GPS-logger...

Arduino är förpackad i en påse med en streckkod:



Kanske är detta originalmodulen?


Strömindikatorlampan är grön, #13 är röd:

Varför behöver du just denna Arduino - 3.3V, och inte som alla andra - 5V för $1.4? Allt är bra när vi behöver visa miraklet som händer när vi ansluter en enhet till Arduino: vi köper moduler, ansluter dem till en gemensam 5V-källa, laddar upp en skiss – och allt skiner och puffar. Men när man utvecklar mer eller mindre använda enheter måste man tänka på både energieffektivitet och kompakthet – som ett resultat flyger hälften av de extra blocken ut ur kretsarna.

Som du kan se är processorn Atmega328 av denna modul kan arbeta med en spänning på 2,7V, och spänningen sjunker praktiskt taget vid stabilisatorn; som jämförelse, på en 5-volts Arduino (från föregående version GPS-logger) Jag observerade en spänning på 3,6 V när jag fick ström från 5 V vid RAW-ingången.

Förresten, med vilken hastighet producerar den information? Jag hade en loggfil, på två minuter ackumuleras den 5,42 KB (4336 KB) ~ 37 KB/s, om jag inte har fel är hastigheten nästan 15 gånger lägre.

Samma ledningar, vi ansluter strömmen utan stabilisator - direkt till VCC, TX -> 2:


Skriptet läser tecken för tecken från programvaran serieport och skriver till hårdvarurummet som vi kopplade programmeraren till och se vad som kommer ut:
#omfatta // För att använda mjukvaruporten. SoftwareSerial mySerial(2, 3); //Initiera pin 2 på Arduino. char ch; // Buffert. void setup() ( Serial.begin(9600); mySerial.begin(9600); ) void loop() ( // Om ett tecken läses från programvaran svett, if ((ch = mySerial.read()) != -1) Serial.write(ch); // skriv det till hårdvaran. )
I "Port Monitor" finns linjer som är karakteristiska för GPS-modulen:

Koden som skrevs tidigare är faktiskt ibland buggig, så det finns fortfarande ett behov av att förfina den. Efter att ha samlat den här alfaversionen:


skrev om manuset -

nästan färdig GPS-logger

#omfatta #define SER_SP 9600 // Seriell porthastighet. Fil flDataFile; // Fil för inspelning av GPS-strängar. char chGpsLint; // Variabel för att lagra GPS-strängen, byte btReaded; // dess längd. void setup() ( Serial.begin(SER_SP); // Ställ in porten. if (!SD.begin()) // Om vi ​​inte kan börja arbeta med kortet, delay(3600000); // gör ingenting i en timme. flDataFile = SD.open("-NKK-LOG.GPS", FILE_WRITE); // Fil att skriva: if (!flDataFile) // om vi inte kan öppna delay(3600000); // gör ingenting i en timme. ) void loop() () void serialEvent() ( // Anropas automatiskt när nya data kommer. while (Serial.available()) ( // Medan det finns data på serieporten, btReaded = Serial.readBytesUntil ("\n", chGpsLint, 128); // läs raden, if (btReaded > 45) // om den är minst så många tecken lång, flDataFile.write(chGpsLint, btReaded); // skriv data till filen. ) flDataFile.flush(); // Töm filbufferten. )

Fånga text när den avbryts. Den som visas på bilden ovan kan redan anslutas till batteriet och användas, men produkten måste färdigställas!

För installation beslutades det att använda, men innan du installerar, skulle det inte vara bättre att tänka på hur elementen skulle ordnas - Fritzing att hjälpa!


Det svåraste var att slutföra ritningen av brädan, men det är bättre att spendera tid framför en datorskärm än ännu mer tid med ett lödkolv och välja det optimala arrangemanget av element.
"Hut" till vänster - MicroSD->SD-minneskortadapter;
Lysdioder uppe till höger: 3 för kadens och en för att indikera enhetens status (fel vid åtkomst till kortet, fel vid skapande av en fil, väntar på data från GPS), motståndet kommer att vara SMD mot jord;
GPS-modulen visas inte: den är placerad på baksidan av kortet;
det kommer också att finnas ett strömbatteri;
längst ner till höger - jack-3.5 för anslutning av tungströmbrytaren; du måste borra ett hål i huset nära dess plats.
Jag började montera, storleken på brädan visade sig vara exakt lika stor som lådan. Det verkar för mig att jag valde det för detta fodral... Smältlim hjälper mig att fästa modulerna inuti fodralet! Först ville jag skulptera batteriet till fodralet:


Men designfunktionerna bestämmer att det är bättre att placera det på tavlan:


Sedan fästes en GPS-modul och dess antenn på kortet (så att den låg bredvid batteriet), på grund av utrymmesbrist måste "skärmen" tas bort från antennen:


För att göra borttagningen ännu bekvämare löddes ett "handtag" på brädet:


Från början planerade jag att montera Arduino-modulen genom kontakterna, men eftersom höjden på höljet inte räckte, och jag inte ville såga eller skära något annat, bestämde jag mig för att löda den till kortet på ett coolt sätt:


Första gången jag såg en sådan board-on-board montering var i en Bluetooth-modul - det blev coolt. Det enda negativa är att du bara kan ta bort det tillbaka smärtfritt med en hårtork. För att blinka kommer jag att löda fler kontakter - kortet är stort.
Illustrationen ovan hjälpte mig att löda minneskortadaptern korrekt, jag lödde om den 2 gånger, och den tredje gången kom jag ihåg var kontakterna var =)


Vi fixar det med varmt lim för bekvämlighet:

^-under adaptern finns strömkontakter för GPS-modulen, anslutna med en bygel: genom bygeln kommer ström från den linjära stabilisatorn på Arduino. Vid anslutning till en GPS-modul via UART kan bygeln tas bort så att Arduino inte snappar upp gränssnittet.


Efter påslagning gav GPS:en GMT-tid efter 80 sekunder och positionsdata efter 14 minuter! Det finns mycket, men det här är bara från balkongen.
Efter byte och lödning av lysdioderna och kondensatorn till RAW (28uF, för säkerhets skull, hittade "extra" delar):

^- för att ansluta till programmeraren sticker kontakter ut på kortet.
På baksidan låter bygeln som nämns ovan dig inaktivera GPS-modulen när du arbetar med Arduino eller Aruino när du arbetar med GPS-modulen via en UART-programmerare:

^- kontakter visas separat för enkel anslutning till GPS.

Locket som brädan är fäst i placeras på botten och säkras (tills vidare med gummiband från kammaren). Botten är i sin tur fäst vid ratten; för detta finns det 4 hål i rektangelns hörn:


Ett antal hål på kanten behövs för displayens lysdioder, men de måste fortfarande justeras: antingen fixar jag lysdioderna inuti eller så tätar jag hålen med genomskinligt varmt lim, jag har inte bestämt mig ännu. Limmat på framsidan av fodralet:


Botten är fäst vid ratten:


"Locket" klamrar sig fast i botten (och förvandlas till botten):


När den väl är fäst på ratten kan "botten" inte längre tas bort, och enheten förblir i locket; den kan tas bort och användas separat för att felsöka eller spela in ett spår, till exempel en joggingtur.

Tre blå kadensindikatorlampor tänds enligt följande mönster:
[LEDs] [ * * * ] 130 + [ * * ] 120 [ * ] 110 [ * * ] 100 [ * ] 90 [ * * ] 80 [ * ] 70 70 - [Kadens]

Från vad som behövdes göras:
- efter beslutade man att inaktivera det programmatiskt;
- spänningsförstärkningsmodulen har tagits bort, strömförbrukningen är cirka 95-125 mA - detta är nästan 2 gånger mindre jämfört med och det fanns inga lysdioder, som var och en förbrukar 10-15 mA;
- SD ansluten direkt;
- placeringen av lysdioderna och elementen inuti höljet står i konflikt med önskan att göra ett universellt/demonterbart system på kortet - som ett resultat förblir höljet detsamma och det finns nästan ingenstans att koppla in batteriet i det =)

Källa

/** * På grund av många förfrågningar * Jag publicerar den efterlängtade källkoden, * utan kadensindikatorer. * En lysdiod (17) lyser vid driftstart * tills den första NMEA-strängen på 70 tecken tas emot. */ #inkludera #define FILE_NM "-NKK-LOG.GPS" #define SER_SP 9600 #define RED_ON PORTC |= 0b000001000 // Slå på eller #define RED_OFF PORTC &= 0b111110111 // stäng av den röda lysdioden. flyktigt ord wTotRev, // Totalt antal pedalvarv; wTotRevLastWtd = 0; // den sista som skrevs till loggen. Fil flNMEA; // Fil för inspelning av GPS-strängar. char chNMEA; // Variabel för att lagra GPS-strängen, byte btReaded; // dess längd. bool bWaitingGps = sant; // Väntar flagga för första aktuella GPS-data. void setup() ( delay(800); // När de slås på kan strömkontakterna studsa. pinMode(17, OUTPUT); // Device status LEDs. while (!SD.begin()) ( // Medan SD kort detekteras inte , RED_ON; delay(150); // blinkar. RED_OFF; delay(500); ) flNMEA = SD.open(FILE_NM, FILE_WRITE); // Kontrollerar arbetet med filer. if (!flNMEA) // Om det finns ett fel när en fil öppnas medan (true) (// blinkar 2 gånger. RED_ON; delay(150); RED_OFF; delay(150); RED_ON; delay(150); RED_OFF; delay(500); ) Serial.begin(SER_SP); // Låt oss börja arbeta med GPS-sensorn. RED_ON; ) // setup() // void loop() ( ) // loop() // void serialEvent() ( // Anropas automatiskt när nya data kommer. while (Serial.available( )) ( // Medan det finns data på serieporten, läs. btReaded = Serial.readBytesUntil("\n", chNMEA, 128); if (bWaitingGps) ( // Om GPS ännu inte producerar aktuella data, if (btReaded > 70 ) ( // kontrollera dem. bWaitingGps = false; RED_OFF; flNMEA.write(chNMEA, btReaded); ) ) else if (btReaded > 0) // Om GPS tidigare utfärdade aktuella data, flNMEA.write(chNMEA, btReaded); // skriv till filen. ) flNMEA.flush(); // Återställ filbufferten. ) // serialEvent() //

Produkten tillhandahålls för att skriva en recension av butiken. Granskningen publicerades i enlighet med paragraf 18 i webbplatsens regler.

Jag planerar att köpa +21 Lägg till i favoriter Jag gillade recensionen +16 +36

Arduino + två servon + laddningskort + boost-omvandlarkort + gammalt batteri + ett gäng radiokomponenter + plywoodbit + vippströmbrytare = en idiots dröm går i uppfyllelse!
Mycket text för den som gillar att läsa. Massor av spoilers för den som gillar att läsa diagonalt. Video, för dig som älskar videor. Skiss för dig som gillar att direkt kopiera och springa "på knäet". Foto, foto, foto. Katt, för kattälskare.

Inte riktigt en ansvarsfriskrivning

Detta är mitt första projekt, förutom blinkande LED, Hello world, etc. Enligt traditionen måste du först strö aska på huvudet för att säkerställa att koden är långt ifrån perfekt och se till att blanda dig i en tvist om detta. Och även angående partiell kopiering av kod från ett annat projekt, be att inte slå för hårt osv. Men detta kommer inte att hända. Koden är perfekt! Eftersom det fungerar gillar jag det och jag gjorde det för mig själv.
Jag ska ge råd till dem som är intresserade: var inte rädda, gå med i striden, skotta berg av kod, bygg dina egna megapyramider från olika operatörer. Med tiden kommer stil, sofistikering och ideal att komma.
Så länge det finns plats i kontrollenhetens minne är du inte rädd för någonting. Om du träffar en vägg kommer du att optimera. Och detta är också utveckling. Det är viktigt.
En stor bok om C-programmering - ja, användbar. Men till en början är det mycket mer användbart att ha en snabbreferensguide om kommandon till hands och ha flera länkar i dina bokmärken för att arbeta med enkla exempel, bibliotek, etc., som, eller samma Ampere.
Dessutom hjälper flödesscheman mig mycket. Rektangel, diamant, oval. Alla som har stött på det förstår. Jag håller på med ett projekt nu - jag kan inte göra det utan ett flödesschema. För mig är det bättre att rita i flera dagar - rita om på papper för att tydligare föreställa hela programmets flöde, än att anteckna en massa kod och fastna i det, eftersom... Jag har inte förmågan att täcka hela koden med kraften i mina programmeringstankar, på grund av min begränsade erfarenhet.
För den som vill upprepa det eller göra det på sitt eget sätt så svarar jag på alla frågor.
Jag kommer inte att gå in i tomma tvister om mitt skrivande, stil, design, kod och nödvändighet av produkten, etc. Om jag gjorde ett allvarligt misstag någonstans i recensionen kommer jag att rätta till det eller lägga till det.

Du kan Google vad "den mest värdelösa enheten" är. Jag kom över det av en slump. Denna kod togs som grund, eftersom den startade inte av sig själv, och jag ville göra mina egna manus.

Lyrisk utvikning

De säger att efter fyrtio, särskilt när du redan är mycket efter fyrtio, måste du försöka "flexa" din hjärna. Och att lära sig språk är den bästa uppvärmningen. Och inte bara i den åldern. Jag är inte så bra på språk, men tidningen Hälsa verkar ge råd... I allmänhet bestämde jag mig för att lära mig något nytt för mig själv. Elektronik är inte nytt för mig, även om jag har glömt det mesta, men programmering har aldrig varit bekant för mig. Jag var rädd för honom. Men här sammanföll många tecken från ovan: tidningen "Hälsa", som rekommenderar att lära sig något nytt, en långvarig dröm att förstå (åtminstone lite) programmering (åtminstone något) och youtube, där bara de lata inte pratar om hur man blinkar en LED med smart avgift för en dollar och en slant.
Innan detta lyckades jag lysdioden blinka ganska bra med två transistorer, en kondensator och ett par motstånd, men nu, säger de, det är inte comme il faut. Så du måste vara i trenden.


Jag gillade verkligen denna värdelösa, i ordets bokstavliga bemärkelse, enheten. Jag såg den och blev kär. Jag vill ha det, det är allt! Som en barndröm! Men åldern har gjort sina egna justeringar. Jag vill göra den själv, inte köpa den. Speciellt eftersom den är på rea enkla enheter. Jag stötte på en "intellektuell", men jag kunde inte hitta något liknande på rea. Dessutom måste det göras!
Och igen, Arduino. Och jag bommar inte på det. Så vi måste ta reda på det. Aliexpress till undsättning. Jag började med Arduino. Jag förstod att vägen till studier skulle vara svår och uppoffringar var oundvikliga. Så jag beställde fem olika. Låt dem brinna, om något. Felsökning av kretsen skedde på Uno från en annan säljare. Men eftersom just denna bräda var i den slutliga enheten, inkluderades den i titeln.
Förutom Arduinos beställde jag en enorm mängd av alla sorters skräp, både Arduino-kompatibla och nära Arduino. Här kommer jag bara att berätta om vad som var användbart i denna produkt.

Arduino Pro Mini


Leveransen är snabb, förpackad i en standard antistatisk påse och kuvert med finnig inneryta. Säljaren är sällskaplig, rysktalande.
På ett 328-chip. 3,3 volt, 8 MHz. Varför är det så? Ja, av misstag. Jag ville ha 5 volt, 16 MHz, men köpte den här. Det är mitt eget fel. Men för detta projekt är det inte kritiskt - jag installerade en extra spänningsomvandlare. Det är allt. Jag hittade inga stora skillnader från andra Minis. Märkesskillnaden är svart textolite(?) Av jambs: RAW-stiftet fungerar inte på brädan. Men det slutade inte heller. Även om en 3,3 V-omvandlare skulle kunna spara pengar med den.Kammarna är inte lödda. Tavlan är välgjord.
Varför så kort? Eftersom det redan finns partiskhet om den här säljaren och hans avgifter (klausul 18). De som vill hittar det lätt. Det är ingen idé att återberätta det. Jag lade också till mina två cent i kommentarerna till den. Och jag korresponderade mycket med säljaren.


Servodrift SG90


3,2 USD per lot om två stycken.
Det finns inget speciellt att beskriva. Svag servodrift med genomsnittlig positioneringsnoggrannhet, vilket är starkt beroende av rörelsehastigheten. Men det är billigt. För lockdrivningen - mer än tillräckligt, för "handen" - på gränsen till möjligheter. Den kräver 5 volt för att fungera, men 3,3 är tillräckligt för kontroll. Jag försökte styra den genom omvandlaren och direkt från Arduino - det är ingen skillnad. Därför sparade nivåomvandlaren pengar.


Laddningsregulator och effektomvandlare


$2,28 för fem stycken. Med skydd. Under laddning lyser den röda lysdioden, när laddningen är klar lyser den blå lysdioden. Det var en recension här.


$0,50 styck. Leveransen är dock betald, men jag köpte en hel drös med andra saker från denna butik, så leverans var inte störande. USB-uttaget togs bort för att minska vikten))) Utgången producerar 5,12 volt.





Jag tog den offline. Lite tight. För att underlätta driften av servo var det möjligt att demontera den, förkorta fjädern eller ersätta den med en svagare. Men latheten vann. Jag uttryckte det så här. Det är sant att jag var tvungen att skriva i kodtillsatserna till servos rotationsvinkel vid höga hastigheter.


TTL-omvandlare


$1,5 per styck. Egentligen beställde jag den först. Det är halva priset. Men av några konstiga skäl dog han en heroisk död. Jag förstår fortfarande inte hur jag dödade honom. Av denna anledning stannade projektet i en månad tills en ny, mer avancerad kom - inget behov av att trycka på återställning. Är inte detta framsteg?


Resten är från förråd

Spänningsregulator 1117T-3,3V i TO220 hölje, kondensatorer 1500,0x6,3 och 470,0x16, två 0,1 μF kondensatorer, vit LED och mikrobrytare från barnbil, 220 Ohm motstånd. Batteriet hade legat oanvänt i flera år. Jag tog en gång isär en bränd (bokstavligen) bärbar DVD-spelare. Det enda bra där var batterierna som överlevde. Här är en av dem som kom väl till pass. Spänning 3,7 V, jag hittade inte kapaciteten i märkningen.
Limpistol, resår för pengarna, två krokar från... en behå (tack vare min fru. Älskling, jag älskar dig!), två möbelpinnar, fyra skruvar, fyra självhäftande stötfångare för möbeldörrar, en bit av en brödbräda, ledningar, kontakter.


Situationen med skrovet var mer komplicerad. Många lådor har provats. Plastlådan från Tissot-klockan visade sig vara ömtålig, delvis kartong. Men metallgardinerna från den kom upp. Det finns till och med en kvar i lager. Jag provade färdiga parfymfodral, en vinlåda och en godislåda. Till slut bestämde jag mig för att göra det själv.
Högkvalitativ plywood, troligen björk, hittades i ett barns bränningssats. Barnet har vuxit upp – uppsättningen finns kvar. På ena sidan fanns en teckning, men den andra sidan såg ut rent ut sagt, utmärkt

Enkelt uttryckt, jättebra

I skolan hade vi en Trudovik. Åldrig. I allmänhet är han en underbar person. Han var respekterad. När vi gick igenom elektricitet, med hjälp av exemplet med ett batteri, en glödlampa och en nyckel, höll han en föreläsning för oss.
"Det är ström i batteriet. Nu kommer han ur det positiva och följer ledningarna. Det går, går, plötsligt bam - nyckeln är på väg. Och nyckeln är öppen. Tok förstår att det inte finns någonstans att gå längre. Han vände sig om och gick in i batteriet. Och ljuset tänds inte. Vi stänger nyckeln. Strömmen började flyta igen, nådde nyckeln, passerade genom den, passerade genom glödlampan och återvände till batteriet. Och glödlampan lyser, ärligt talat, perfekt.” Sedan dess har det funnits en sådan fras i lexikonet, som en synonym för något oväntat lyckat.




Jag försökte skära plywood med en bågfil och en sticksåg, men det fungerade inte. Spån, som då är svåra att få bort, och en ojämn kant. Jag hittade en väg ut - en vass brevpapperskniv. Den skär igenom hälften av plywooden på ena sidan och hälften på den andra. Sedan lite slipning och allt är bra. Men, med en bra metalllinjal och ett konstant vasst blad får du ett perfekt snitt och en rak linje.
Naturligtvis inte utan dess brister - under det handgjorda klistermärket finns ett banalt hål gömt. Jag borrade den i mitten för vippströmbrytaren. Men servo passade inte. Jag var tvungen att flytta vippströmbrytaren åt sidan och stänga hålet. Sådana svårigheter skrämmer mig inte.
Jag ser inte poängen med att beskriva varje nysning som är involverad i att tillverka enheten. Jag kommer att beskriva några punkter. Och den som har händer, låt honom göra det.
Jag satte ihop lådan med smältlim. Själva limmet sparade jag inte på. Den håller sig perfekt. Knarkar inte, spelar inte. Snabbt, billigt och glad. Och i allmänhet, som du märkte, hålls nästan allt ihop av detta lim. Jag rekomenderar. Det påskyndar monteringsprocessen avsevärt. Jag limmade avstängningsmikrofonen från insidan till vänster vägg - det syns lite på bilden.
Locket var fäst på gardinen.

Jag led med slöjan. Jag experimenterade mycket. Jag ville att locket skulle sitta ovanpå lådan, och inte inuti. Jag böjde till och med flera versioner av häftgardiner från gem. Poe kom senare ihåg att under experimenten fångade gardinerna från lådan med Tissot-klockor hans blick. Så bra, schweiziska (kinesiska?).
Slöjan är en viktig sak. Dess kvalitet är mycket viktig för helheten yttre skönhet enheter.
Huvudvippströmbrytaren måste vara mjukare, då fungerar den lättare.
Locket återförs till stängt läge med ett elastiskt band. Det finns inget behov av att välja det mycket styvt - servo kommer att hantera det, men om gardinen är centralt placerad kommer locket att skeva.
När det gäller plywood är lackning obligatoriskt - det blir väldigt smutsigt. Jag använde klart tsaponlack. Helt enkelt för att det inte fanns någon annan till hands.
Det är bättre att placera servo som styr "handen" annorlunda. Inte på sidan utan framför vippströmbrytaren. Då kan "armen" vara enklare att tillverka - L-formad, istället för U-formad. Boxens bredd kan minskas och vippströmbrytaren kan placeras i mitten.
Det är bättre att rotera lockservo 180 grader, då blir det i koden lättare att associera graderna för denna servo med lockets funktion. För mig är det tvärtom, så öppning betyder minskande grader. Men för "handen" är det tvärtom. Och det är mer korrekt att trycka på locket från samma sida som det elastiska bandet drar tillbaka från.
Lådan ska inte göras för liten. Det kommer inte att vara bekvämt att använda. Men en plattare är acceptabel. Boxen är lätt och är den plattare blir den mer stabil. Det blir bekvämare att trycka på vippströmbrytaren med fingret utan att hålla i lådan.
Jag gjorde något som en sköld av två bitar av en brödbräda. Löd in i Arduino utan kontakter. Tätt. Jag bryr mig inte.


Men jag gjorde all kringutrustning på kontakter. Det är bekvämare.
Kondensator stor kapacitet Strömförsörjning för arduino (3,3 volt) krävs. Utan den hänger Arduino.
Jag har inga monteringsritningar på enheten. Det är så enkelt att många andra kan användas enkla lösningar, som all mekanik bygger på. I videon, både min och andra liknande enheter, kan du se drivalternativen som används.

#omfatta #omfatta ServodörrServo; //cover servo drive Servo handServo; //arm servo Bounce bouncer = Bounce(12, 40); //skapa en instans av klassen Bounce för stift 12 på vippomkopplaren int pos = 0; //startposition variabel int pos1door = 70; //initial position för locket servo int pos2door = 30; //slutposition för lockservot int pos1hand = 10; //startposition för handservot int pos2hand = 160; //slutläge för armservot int r; //slumptal som alternativet att stänga av vippomkopplaren beror på #define LED_PIN 11 // nummer på utgången ansluten till LED int ledState = LOW; // ställ in lysdiodens status med denna variabel long previousMillis = 0; // lagra tiden för den senaste omkopplingen av lysdioden #define INTERVAL 30UL // intervall mellan att slå på/stänga av lysdioden void setup() ( pinMode(LED_PIN, OUTPUT); pinMode(12, INPUT); // switch pin 12 till ingångsläge digitalWrite(12, 1); //slå på pull-up-motståndet på den Serial.begin(9600); //ställ in porten på en hastighet av 9600 bps. För felsökning. Sedan kan du ta bort den. doorServo .attach(9); //tilldela lockservot till stift 9 handServo.attach(10); //tilldela handservot till stift 10 doorServo.write(pos1door); //ställ lockservot till utgångsläget handServo. write(pos1hand); //ställ handservot till utgångsläget ) void loop() ( if (bouncer.update()) ( if (bouncer.read()==0) ( //om knappen trycks in ( r = random(0,11); //generera ett slumptal jn 0 till 10 Serial.println® ; if (r == 0) ( move_0(); ) //kalla funktionen med ett slumptal annars if (r == 1) ( move_1(); ) else if (r == 2) ( move_2(); ) else if (r == 3) ( move_3(); ) else if (r == 4) ( move_4() ; ) else if (r == 5) ( move_5(); ) else if (r == 6) ( move_0(); ) else if (r == 7) ( move_1(); ) else if (r == 8 ) ( move_4(); ) else if (r == 9) ( move_3(); ) else if (r == 10) ( move_0(); ) ) ) ) // Funktionsbibliotek. Allmän princip: öppna locket - stick ut handen och stäng av vippströmbrytaren - ta bort handen - stäng locket // och det finns alternativ för hur du kan dekorera det vackert............ void move_0( ))( //enkelt alternativ: öppnade-vände-stängda //öppna locket för(pos = pos1dörr; pos >= pos2dörr; pos -=3) ( doorServo.write(pos); delay(15); ) // stick ut handen för(pos = pos1hand; pos<= pos2hand; pos +=3) { handServo.write(pos); delay(15); } //убираем руку for(pos = pos2hand; pos >= pos1hand; pos -=3) ( handServo.write(pos); delay(15); ) //stäng locket för(pos = pos2dörr; pos<= pos1door; pos +=3) { doorServo.write(pos); delay(15); } } void move_1(){ //простой вариант 2: открыли-выключили-закрыли //открываем крышку for(pos = pos1door; pos >= pos2dörr; pos -=1) ( doorServo.write(pos); delay(15); ) delay(1000); //stick ut handen för(pos = pos1hand; pos<= pos2hand; pos +=1) { handServo.write(pos); delay(15); } //убираем руку for(pos = pos2hand; pos > <= pos1door; pos +=5) { doorServo.write(pos); delay(15); } } void move_2(){ //задумчивый вариант 2: приоткрыли-закрыли-открыли-выключили-закрыли //открываем крышку for(pos = pos1door; pos >= pos2dörr+15; pos -=5) ( doorServo.write(pos); delay(15); ) delay(1000); //stäng locket för(pos = pos2dörr+15; pos<= pos1door; pos +=5) { doorServo.write(pos); delay(15); } delay(1000); //открываем крышку for(pos = pos1door; pos > <= pos2hand+2; pos +=5) { handServo.write(pos); delay(15); } //убираем руку for(pos = pos2hand+2; pos >= pos1hand; pos -=5) ( handServo.write(pos); delay(15); ) //stäng locket för(pos = pos2dörr; pos<= pos1door; pos +=5) { doorServo.write(pos); delay(15); } } void move_3(){ //дерганый вариант: приоткрыли-подергали - закрыли-открыли-выключили-закрыли //открываем крышку for(pos = pos1door; pos >= pos2dörr+15; pos -=1) ( doorServo.write(pos); delay(50); ) delay(500); //dra i locket för(int i=1; i<=8; i ++) { doorServo.write(pos2door+18); delay(80); doorServo.write(pos2door+15); delay(80); static unsigned long previousMillis = 0; if(millis() - previousMillis >INTERVAL) ( föregåendeMillis = millis(); digitalWrite(LED_PIN,!digitalRead(LED_PIN)); ) ) delay(500); //stäng locket för(pos = pos2dörr+15; pos<= pos1door; pos +=1) { doorServo.write(pos); delay(50); } delay(1000); //открываем крышку for(pos = pos1door; pos >= pos2dörr; pos -=5) ( doorServo.write(pos); delay(15); ) //stick out hand for(pos = pos1hand; pos<= pos2hand+2; pos +=5) { handServo.write(pos); delay(15); } //убираем руку for(pos = pos2hand+2; pos >= pos1hand; pos -=5) ( handServo.write(pos); delay(15); ) //stäng locket för(pos = pos2dörr; pos<= pos1door; pos +=5) { doorServo.write(pos); delay(15); } } void move_4(){ //открываем крышку delay(2000); for(pos = pos1door; pos >= pos2dörr+15; pos -=5) ( doorServo.write(pos); delay(50); ) delay(500); digitalWrite(LED_PIN,!digitalRead(LED_PIN)); delay(2000); digitalWrite(LED_PIN,!digitalRead(LED_PIN)); fördröjning(500); //stäng locket för(pos = pos2dörr+15; pos<= pos1door; pos +=5) { doorServo.write(pos); delay(50); } delay(1000); //открываем крышку не полностью for(pos = pos1door; pos >= pos2dörr+15; pos -=1) ( doorServo.write(pos); delay(50); ) delay(2000); //öppna locket helt för(pos = pos2dörr+15; pos >= pos2dörr; pos -=1) ( doorServo.write(pos); delay(15); ) //stick ut handen för(pos = pos1hand; pos<= pos2hand-35; pos +=1) { handServo.write(pos); delay(35); } delay(1000); //высовываем руку for(pos = pos2hand-35; pos <= pos2hand+3; pos +=4) { handServo.write(pos); delay(15); } //убираем руку for(pos = pos2hand+3; pos >= pos1hand; pos -=7) ( handServo.write(pos); delay(15); ) //stäng locket för(pos = pos2dörr; pos<= pos1door; pos +=7) { doorServo.write(pos); delay(15); } delay(500); //открываем крышку for(pos = pos1door; pos >= pos2dörr+20; pos -=5) ( doorServo.write(pos); delay(50); ) delay(300); digitalWrite(LED_PIN,!digitalRead(LED_PIN)); fördröjning(500); digitalWrite(LED_PIN,!digitalRead(LED_PIN)); fördröjning(100); //stäng locket för(pos = pos2dörr+20; pos<= pos1door; pos +=1) { doorServo.write(pos); delay(50); } } void move_5(){ //возня for(int i=1; i <=2; i ++) { for(pos = pos1door; pos <= pos1door+45; pos +=5) { doorServo.write(pos); delay(50); } for(pos = pos1door+45; pos >= pos1dörr; pos -=5) ( doorServo.write(pos); delay(50); ) delay(100); ) //dra i locket för(int i=1; i<=3; i ++) { doorServo.write(pos1door-6); delay(80); doorServo.write(pos1door-3); delay(80); } delay(300); //открываем крышку digitalWrite(LED_PIN,!digitalRead(LED_PIN)); for(pos = pos1door; pos >= pos2dörr+25; pos -=5) ( doorServo.write(pos); delay(50); ) delay(500); //öppna locket digitalWrite(LED_PIN,!digitalRead(LED_PIN)); for(pos = pos2dörr+25; pos >= pos2dörr+10; pos -=5) ( doorServo.write(pos); delay(50); ) //öppna dörren digitalWrite(LED_PIN,!digitalRead(LED_PIN)); for(pos = pos2dörr+10; pos >= pos2dörr-5; pos -=2) ( doorServo.write(pos); delay(50); ) //stick ut handen för(pos = pos1hand; pos<= pos2hand-35; pos +=9) { handServo.write(pos); delay(35); } delay(1000); //убираем руку for(pos = pos2hand-35; pos >= pos2hand-70; pos -=1) ( handServo.write(pos); delay(15); ) delay(1000); //stick ut handen för(pos = pos2hand-70; pos<= pos2hand+3; pos +=9) { handServo.write(pos); delay(15); } delay(50); //убираем руку for(pos = pos2hand+3; pos >= pos1hand; pos -=7) ( handServo.write(pos); delay(15); ) //stäng locket digitalWrite(LED_PIN,!digitalRead(LED_PIN)); för(pos = pos2dörr-5; pos<= pos1door+3; pos +=5) { doorServo.write(pos); delay(50); } }

Skissen som författaren föreslog från länken i början av recensionen fungerade inte för mig. Och jag var ännu inte det proffs jag är nu))))))))
I allmänhet började jag förstå. Som ett resultat, baserat på någon annans, gjorde jag min egen skiss. Tillagt anti-studsskydd. Det hade förstås varit lättare att installera ett motstånd med en kondensator, men jag ville verkligen programmera det.


I princip framgår schemat av skissen. Men jag tar med henne ändå. Ursäkta kvaliteten - så gott jag kunde. Jag tog ett lite annorlunda omvandlarkort - jag tyckte inte att det behövdes i frontvyn.


Det finns inga speciella förklaringar till skissen. Kanske ögonblicket att lägga till några graders rotationsvinkel, när servohastigheten är hög. Jag märkte att om "handen" plötsligt hoppar ut, stänger den inte av vippströmbrytaren. Detta beror uppenbarligen på den dåliga kvaliteten på servon. Därför måste du lägga till lite till utgångsvinkeln för "armen". Jag misstänker att med upprepning kan dessa ytterligare grader vara annorlunda för dig. Beror på axeln på "armen".
Och om programmen. Hittills finns det sex program. Ringde genom generering av slumptal. Dessutom kallas enkla program (0, 1 och 2) oftare än vanliga. Det verkade för alla mina testare att mer sofistikerade program borde vara en sällsynt trevlig bonus, sedan dyker en viss intriger upp. Så det gjorde jag.
För älskare av siffror är lådans storlek: längd - 150 mm, höjd - 70 mm, bredd - 65 mm.

Youtube har försämrat kvaliteten kraftigt. Om du behöver titta på originalet, ladda ner det. 21 MB.
Här har skissen modifierats så att du kan se alla sex programmen i tur och ordning så att du har en uppfattning om dem alla. I livet, som jag skrev, har de en pseudo-slumpmässig ordning.



Laddning sker via mikro-USB med vanlig mobilladdare. Batteriets livslängd är starkt beroende av hur ofta det används. Ibland i flera dagar, och ibland "dödar" jag på en dag.


Slutligen.
Projektet kan dock vidareutvecklas och förbättras. Du kan komma på nya scenarier. Du kan lägga till en tweeter och rösta enheten. Låt honom till exempel "morra", som att bli arg, om tiden mellan att stänga av och slå på vippströmbrytaren är väldigt kort. Du kan, som i originalprojektet, lägga till rörelse av lådan i olika riktningar.
Du kan bygga in en check för fallet när "handen" av någon anledning inte stängde av vippströmbrytaren (till exempel i kylan når servo inte den önskade vinkeln ganska mycket) och justerar vinkeln en i taget, skriver något slags "nervöst" meddelande specifikt för ett sådant fall » avstängningsprogram. Du kan installera Nano och programmet via USB utan att ta isär enheten varje gång.

Och i allmänhet - du kan göra det mer försiktigt. Det finns många olika saker möjliga. Egentligen är det precis vad jag föreslår att man gör för dem som är intresserade av detta.
Kanske har jag missat något. Det här är lite av en recension för en så enkel enhet. Detta är vad jag kan be om ursäkt för.
Nu katten och tack för att du läste till slutet.

$6,3 (för närvarande 1,43)

Jag köpte en Arduino Pro Mini komplett med en USB-UART-adapter på ett CP2102-chip för 1,5 år sedan (priserna för dem har sjunkit rejält sedan dess) och de har legat på min hylla hela denna tid. Alla kunde inte komma runt att göra någonting på den här handkontrollen. En viktig roll i detta spelades av det faktum att att flasha en skiss i Arduino Pro Mini, även om det inte är svårt, är lite svårare än i Arduino UNO, Mega eller Nano.

Och så jag bestämde mig för att använda den här kontrollern i ett av mina projekt, den ligger fortfarande inaktiv.

Arduino Pro Mini DETALJER

ATmega168 eller 328

Driftspänning

3,35 -12 V (3,3 V-modell) eller 5 - 12 V (5V-modell)

Digitala I/O-stift

14 (varav 6 ger PWM-utgång)

Analoga ingångsstift

DC-ström per I/O-stift

16 KB (varav 2 KB används av bootloader)

8 MHz (3,3V-modell) eller 16 MHz (5V-modell)

Jag råkade ha en 16MHz 5-voltsmodell på ett ATmega 328. Som det visade sig när man analyserade data från Internet finns det styrkort som inte har DTR-signalen dirigerad. I mitt fall är allt rätt kopplat. Satsen innehöll en USB-UART-omvandlare.

Plattformen innehåller 14 digitala in- och utgångar (varav 6 kan användas som PWM-utgångar), 6 analoga ingångar, en resonator, en återställningsknapp och stiftmonteringshål. Ett block med sex stift kan anslutas till ett USB-UART-omvandlarkort.

Arduino Pro Mini är väldigt lik Arduino Nano i sina tekniska egenskaper och parametrar. De är lika stora på bredden, men längden på Arduino Pro Mini är cirka 1 cm kortare.

10 mm är mycket. Men om du löder stiften för att ansluta USB-UART till kortet försvinner alla fördelar med detta kort framför Nano. För tillfället kostar Arduino Pro Mini $0,25 mindre än Arduino Nano. Det är oväsentligt. Det finns inga fler fördelar och nackdelar, bara nackdelar.

Och den största nackdelen är den mer komplexa laddningen av skisser.

Det finns flera sätt att flasha en skiss.

Ett sätt är att använda en Arduino UNO som en USB-UART. Det finns många instruktioner på Internet om hur man gör detta, så jag ska inte uppehålla mig vid det.

Det andra sättet är att använda själva USB-UART-adaptern. Jag har den, och den "rätta", så jag bestämde mig för att använda den. Hur fungerar adaptern? Arduino kommunicerar med omvandlarchippet via en vanlig UART, och ansluts till datorn via USB. Datorn känner igen den anslutna adaptern som en COM-port.

Att ladda upp skissen till Arduino Pro Mini, som det visade sig senare, är inte alls svårt. Du behöver bara ansluta kablarna från uppsättningen med 5 stift på adaptern och Arduino:

(Omvandlare)<->(Arduino)

DTR<->GRN
TXD<->RXI
RXD<->TXO
GND<->GND
5V<->VCC

På min Arduino Pro Mini är DRT-signalen märkt GRN. Det var inte lätt att gissa vad som var vad, speciellt eftersom en "snäll" rådgivare på en av sajterna skrev att GRN måste kopplas till GND. Tja, Internet är en stor soptipp, och det är inte första gången jag har blivit övertygad om att de människor som är mest villiga att ge råd på forum inte är de som verkligen förstår ämnet som diskuteras. Så, GRN är DTR.

För de som inte vet vad DTR är:
Dataterminal klar (DTR) - styrsignal in seriellt dataprotokoll, överfört från terminalutrustning (DTE) till den mottagande utrustningenför att indikera att terminalen är redo för kommunikation.

I Arduino initierar DTR-signalen återställningssignalen i samma ögonblick som skissen börjar överföras.

Möjligt istället för DTR-anslutning<->GRN anslut DTR-adaptern via en 0,1uF kondensator för att återställa Arduino Pro Mini. Det fungerar så också, testat. Det är genom kondensatorn. Trots att det är skrivet på forum och många sajter att du behöver ansluta DTR och RESET direkt, med en direkt anslutning överförs inte skissen. Inget fungerade åtminstone för mig med en direkt koppling.

Teoretiskt, som de skriver på Internet, kan du spela in en skiss utan DTR genom att trycka på reset på styrkortet exakt i det ögonblick som inspelningen börjar. Jag försökte flera gånger fånga detta ögonblick, men jag kunde inte. Jag tränade inte mina färdigheter i att försöka återställa vid rätt tidpunkt; det är lättare att lita på att CP2102-omvandlarchippet levererar återställningssignalen.

Men inte alla CP2102 är skapade lika. Det finns många billiga förfalskningar som säljs på eBay och AliExpress som folk kämpar med och ofta måste modifiera så att de kan spela in en sketch i Arduino Pro Mini. I dessa adaptrar dirigeras inte DTR-signalen från stift 28 på CP2102-chippet. Vissa har Rx- och Tx-markeringarna blandade. Det är därför det finns så många instruktioner på forum på nätet som motsäger varandra och ibland helt enkelt vilseleder läsarna. Jag tillbringade ungefär två timmar med att läsa dessa nonsens (jag ville inte uppfinna hjulet på nytt, jag trodde att jag skulle spara tid) och försökte skriva en skiss i kontrollern med hjälp av dessa instruktioner. Som ett resultat visade det sig att alla instruktioner inte fungerade för min CP2102-adapter. Det visade sig vara den "rätta", där rätt markeringar applicerades och alla signaler var korrekt dirigerade.

Det räckte bara att koppla ihop alla kablar och allt fungerade.

Därför, om du står inför behovet av att spela in en skiss i Arduino Pro Mini via USB-UART, kontrollera först om DTR-signalen dirigeras på Arduino Pro Mini-kortet. Jag läste att det finns brädor som det inte är dirigerat på. I det här fallet kan du använda alternativet att ansluta DTR-signalen från USB-UART-adapterkortet till RESET-stiftet på Arduino Pro Mini via en 0,1-0,15 µF kondensator.

För det andra, kontrollera om DTR-signalen är ansluten till något stift på USB-UART-adapterkortet. Stiftet kan vara, och till och med signeras som DTR, men inte kopplat till stift 28 på CP2102-chippet. Om stift 28 på denna mikrokrets inte är anslutet någonstans, måste du säkerställa dess anslutning till DTR-stiftet. Om stift 28 är anslutet någonstans i kretsen måste detta spår kapas och kopplas direkt till DTR-stiftet.

Korrektheten av Rx- och Tx-markeringarna på ett falskt CP2102-kort kan bestämmas experimentellt; det finns bara två alternativ.

Jag läste också instruktioner på Internet om att du behöver spela in en skiss med USB-UART-adaptern CP2102 i läget "Ladda upp via programmerare", förmodligen är detta det enda sättet allt fungerar. Jag vet inte om författaren till detta opus medvetet vilseleder läsare, eller om han hade något annat än en CP2102 USB-UART-adapter, men detta råd är FEL!

Genom USB-UART-adaptern CP2102 ser datorn Arduino Pro Mini som om den var ansluten till en COM-port, det vill säga precis som andra Arduinos som har en USB-UART-adapter ombord.

Därför laddas skisser upp till Arduino Pro Mini på samma sätt som till andra Arduino-modeller. Du behöver bara välja Pro Mini-modellen i Arduino-programmeringsmiljön, välj sedan en av fyra möjliga typer av processor (ATmega168 eller 328, 3.3 eller 5V) i den extra posten som visas och den virtuella COM-porten som dök upp efter installationen av Drivrutiner för USB-UART-adapter. Då kan du använda nedladdningsknappen eller Ctrl-U. Om allt är korrekt anslutet spelar typ och modell av adaptern ingen roll, skisserna laddas upp via UART. Vi väljer helt enkelt den COM-port som adaptern bestäms av.

Efter 2 timmars läsning av forum och sajter med "guider" och "tips", som var 99% felaktiga, åtminstone de inte var lämpliga för mina specifika Arduino Pro Mini-modeller och USB-UART-adapter CP2102, lyckades jag ansluta och ladda upp allt korrekt in i kontrollern en något modifierad skiss av LED blinkande. Jag fick honom att blinka SOS i morsekod.

Här är en skiss, om någon är intresserad:

// inställningsfunktionen körs en gång när du trycker på reset eller strömsätter kortet
void setup() (
// initiera digital pin 13 som en utgång.
pinMode(13, OUTPUT);
}

// loop-funktionen körs om och om igen för alltid
void loop() (
fördröjning(100); // vänta
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(100); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(100); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300);
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(300); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(300); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(300); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(100); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(100); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
digitalWrite(13, HIGH); // slå på lysdioden (HÖG är spänningsnivån)
fördröjning(100); // vänta
digitalWrite(13, LÅG); // stäng av lysdioden genom att göra spänningen LÅG
fördröjning(300); // vänta
fördröjning(1500); // vänta 1,5 sek.
}

Slutsatser:

Om jag inte hade försökt spara tid genom att "uppfinna hjulet på nytt" och inte lagt ner tid på att läsa värdelösa (även ganska skadliga) tips och guider på forum och webbplatser, skulle det inte ha tagit 2 timmar att ansluta och flasha Arduino Pro Mini, men en max 5-10 minuter.

Jag köpte min uppsättning Arduino Pro Mini och USB-UART-adapter CP2102, som enligt dagens mått var ganska dyr. Sanningen är att jag tröstas med att adaptern är korrekt och att alla signaler är anslutna till den.

Arduino Nano är identisk i parametrar och möjligheter till Arduino Pro Mini, kostar bara lite mer (max 25-50 cent), tappar 1 cm i storlek (och med lödda stift tappar Arduino Pro Mini inte alls), men är mycket mer bekväm att använda tack vare den inbyggda USB-UART och den gemensamma MicroUSB-kontakten.

Arduino Pro Mini är inte det populäraste brädet, skriv "Arduino Nano" i en sökning på eBay och sortera efter pris i stigande ordning och du kommer att se hur de listiga kineserna mycket billigt säljer många Arduino Pro Minis i det här avsnittet, passerar av som Nano? i hopp om att köparen inte kommer att ta reda på det och, med fördel av det låga priset, kommer att köpa dessa kontroller. De har allt sitt hopp bara till kunder som är sossar.

Skulle jag rekommendera att köpa en Arduino Pro Mini? För en nybörjare - nej. Ja – till en person som vet exakt vad det är, vilka nackdelar det har och om de är värda de magra besparingarna.

Jag upprepar än en gång att det inte är svårt att flasha Arduino Pro Mini, men är detta krångel med att ansluta kablarna eller Arduino UNO värt prisskillnaden på $0,2-$0,25. Speciellt om du måste ansluta kontrollern till datorn för felsökning många gånger, men vad händer om den är i ett fodral? Om du tror att det är mer lönsamt att ansluta och koppla bort 5 ledningar tio till femton gånger än att betala 20 cent, är den här kontrollern för dig.

Det är allt. Jag delade med mig av min erfarenhet och uttryckte min åsikt, det är upp till dig att bestämma.

P.S. Det gick lite tid och jag ändrade något min uppfattning om Arduino Pro Mini. Även en besparing på 25-50 cent är mycket, särskilt om en liten sats av produkter som använder denna styrenhet monteras. Det är tydligt att för en liten batch är det bättre att integrera kontrollern direkt på kortet, snarare än att använda en färdig Arduino (detta är fortfarande mer av ett felsökningskort). Men det finns olika alternativ, ibland finns det redan färdiga brädor och du kan uppgradera dem och utöka deras funktionalitet genom att integrera Arduino. Det blir billigare än att bygga nya brädor.

Och närvaron av en USB-UART-adapter ombord på produkten som överlämnas till användaren är helt onödig och till och med skadlig. Så Arduino Pro Mini har rätt till liv.