Lag en enhet / funksjon for salgsautomater: 7 trinn (med bilder)

Lag en enhet / funksjon for salgsautomater: 7 trinn (med bilder)

Innholdsfortegnelse:

Anonim

Vil du legge til en funksjon i en salgsautomat? Kanskje det er en på din lokale maskinvare, kanskje i mancellen, eller kanskje vil du bare gjøre en funksjon for salgsautomater over hele verden. Hvis du har lyst til å lage en ny funksjon for salgsautomater, les videre!

Fra prosjekter like store som å sette en truende AI Chatbot ansvarlig for maskinen, til ting så små og enkle som en Free-Vend-knapp på telefonen, har noen av disse funksjonene det samme behovet for å kommunisere med salgsautomat. Lettere sagt enn gjort! Det jeg skal vise deg, er hvordan du lager en "tom" enhet som kan koble til salgsautomater og wifi / bluetooth. Tenk på det som en tom sjekk, kraften er der, du får til å gjøre det hva du vil at det skal være!

forsyninger:

Trinn 1: Hva er MDB?

Hvis du lager en enhet som snakker til salgsautomater, må du snakke språket. Det språket er 'MDB'. Fullt navn er "MDB / ICP", som står for "Multi Drop Bus / Internal Communication Protocol".

Dette er den mest brukte standarden for kommunikasjon mellom enheter i en salgsautomat, i alle fall i USA. Vedlikeholdt og eid av NAMA (National Automatic Merchandising Association) og EVA (European Vending Association), ble den utviklet tilbake på begynnelsen av 90-tallet, og har standardisert måten salgsautomater kommuniserer, slik at deler til salgsautomater (regningsacceptorer, myntbyttere osv..) å jobbe i hvilken som helst vending av hvilken som helst merke / modell så lenge den maskinen som støtter standarden.

Det er mange maskiner som fortsatt bruker den eldre teknologien, og har ikke oppgradert ennå, så vær sikker på at maskinene din er beregnet på, har MDB-muligheter. Annet enn å sjekke håndboken for din spesifikke maskin, er en enkel indikator for at maskinen har MDB-muligheter, tilstedeværelsen av en ledningsnett med en 2x3 Molex Minifit Jr-kontakt. Jeg har tatt med et bilde av en kvinnelig MDB-plugg (den er kjønet av metallkontaktene).

Hvordan virker det?

Nå er det meningen å se på "MDB Explained" videoen. Jeg føler meg litt dårlig ved å bruke denne fyrens video for å fremme alternativer til sine produkter (han virker så vennlig og spent), så hvis du har penger, bør du vurdere å kjøpe sin MDB til USB-produkter eller ansette ham for å designe deg et tilpasset produkt, i stedet for gjør det selv.

Et notat jeg vil legge til, er begrepet "Multidrop Bus" også et teknisk (ikke-vending) begrep, så hvis du gjør noen internett-søk etter MDB, vil det være best å bruke hele navnet "MDB / ICP" og / eller kanskje legge til ordet "vending" der inne.

De to andre videoene av hans du kan sjekke ut om du vil, men jeg føler det er mye kortere å forklare i ord:

  • MDB har en master og slave konfigurasjon, hvor VMC er mesteren, og alle eksterne enheter er slaver.

  • De VMC / Master, initierer og slutter all kommunikasjon, og periodisk avstemninger (sjekker på) periferiutstyr / slaver.

  • ThePeripheral / Slave, lytter til all kommunikasjon som kommer fra VMC, og venter på en kommando som skal adresseres til den, før du sier noe til VMC / Master.

  • På denne måten snakker bare én perifer til VMC når som helst, noe som er nødvendig i en Multidrop-konfigurasjon (teknisk term).

Hvilke perifere alternativer er der?

MDB-standarden tillater nå disse enhetene:

  • Myntbyttere (Tar endring og gir endring)
  • Bill Acceptors (Tar regninger, og nyere modeller kan gi regninger)
  • Cashless Betalingsenheter (Godtar digitale betalingsmåter)
    • Kan brukes av andre grunner, for eksempel å få tilgang til maskinens display og tastatur, få salgsoppdateringer eller overføre filer. Hvis du gjør en tilfeldig funksjon, bør du ha standard på å ha det som denne typen perifer på grunn av strømmen den har over maskinen.
  • Kommunikasjon Gateways (For eksterne datakommunikasjonsenheter er DEX den dominerende revisjonsstandarden)
  • Universal satellitt-enheter (Kort sagt, en salgsautomatikk / tillegg som trenger vertsmaskinen for betaling aksept)
  • Coin Hoppers (Bulk mønt dispensing, som en bytte maskin)

Noen ekstra ting å vite:

  • UART, er en generell / ikke-vending standard for overføring av serielle data. Formatet av serielle data og datahastigheten kan konfigureres. De fleste maskinvare har en UART-krets som kan konfigureres til dine behov.
    • UART-innstillingene for MDB er 9600NRZ, 9-N-1

      • 9600 står for en Baud rate på 9600, aka 9600 bits per sekund, noe som betyr at hver bit er 104uS lang.
      • De NRZ står for Non-Return-To-Zero, som er underforstått / standard i de fleste tilfeller.
      • De 9 står for 9 databiter, 8 er standard og 9 er uvanlig. Mer om dette senere.
      • De N står for ingen paritetskontroll.
      • De 1 står for 1 stoppbit.
  • RS232, det er mange MDB til RS232 Adaptere. Dette skyldes at RS232 er / var en populær standard som går utover MDB, som er lett og vanlig brukt med UART, noe som gjør det enkelt å tilpasse seg MDB. Jeg anbefaler å holde seg vekk fra RS232 hvis det ikke er sterk grunn til å bruke den. Markedet er oversvømmet med det, og det er en utdatert standard som vanligvis er indikativ at designerne bruker den fast i gamle (mindre effektive / utførende) måter. Det samme gjelder for gjennomgående kretsløp, men det er et annet tema.
  • USB, hvorfor lager de ikke USB-adaptere? Godt spørsmål!

    • Det er en enkelt toveis datalinje i USB2.0. MDB / UART bruker separate enveis sende- og mottakslinjer separat.
    • USB3.0 har en separat Transmit and Receive-linje, men den (samt USB2.0) er differensialt signalert, hvor MDB / UART bruker Single Ended Signaling. Jeg utfordrer noen til å lage en USB2.0 og / eller USB-C til MDB-adapter uten å bruke noen integrerte kretser (oppamps tillatt, skiftregister bare hvis 100% er nødvendig), legg det inn i delen "Jeg gjorde det" hvis du gjøre.
    • For de som lurer på om USB til UART-adaptere kan du ha, de eneste to chipsene som eksisterer som jeg er klar over å støtte 9 bit UART, er begge laget av MaxLinear, og ingen av dem har blitt brukt i en USB til UART-adapter. Ingen av FTDIs sjetonger støtter 9 bit UART, og selv om vi finner måten å få det til å fungere, vil det være litt ekstra arbeid (programvaredrivere, COM-porter, etc.) når vår første prioritet er rask og enkel, for det Grunnen til at vi bruker et utviklingsforum i stedet.
  • EVA-DTS er en salgsindustrispesifikke datastandard, som du bør være oppmerksom på hvis du lager et produkt. Det gir et ensartet format for alle salgsrelaterte data. DTS står for "Data Transfer Standard".

Den nyeste versjonen av MDB-standarden finnes her. Hvis du velger en perifer du vil gjøre, må du skumle over hele avsnittet for å gjøre deg oppmerksom på alle funksjonene / alternativene den har.

Trinn 2: Verktøy som trengs

Du vil lage en breadboard-versjon av MDB-enheten din, før du lager en tilpasset versjon. Før du starter, trenger du noen verktøy.

De primære to sidene for å bestille deler, vil være DigiKey og Amazon. Jeg velger Amazon, forutsatt at du har et Amazon-medlemskap og / eller dette ville være den foretrukne metoden når ting ikke kan bli funnet på DigiKey. Det ville være best å få alt i en handlekurv (eller to) og holde av på bestilling til du har delene plukket ut fra neste trinn også.

Verktøy Trengs for breadboard-versjonen:

  • Loddejern. Selv om du bare trenger et stryke for dette instruerbare, anbefaler jeg at du får varm luftfunksjon, om ikke en fullstendig på SMD rework-stasjon. Da jeg var en tenåring, solgte jeg mine fancy airsoft våpen, og kjøpte rework-stasjonen nedenfor, sammen med en rekke andre verktøy for å komme inn i elektronikk. Jeg har brukt rework-stasjonen til å reflow BGA-tilkoblinger i noen bærbare datamaskiner og det har betalt for seg selv på den måten.

    • Beste verdi (Iron, Hot Air / SMD, BGA rework)
    • Beste verdi (Iron, Hot Air / SMD)
    • Beste kvalitet (bare jern)
  • Lodding. Ikke glem at røyk er giftig og forårsaker kroniske helseproblemer. DigikeyAmazon
  • Presser

    • Her er det billigste, passende paret jeg fant.
  • Wire strippere. Noen vil gjøre, men jeg anbefaler på det sterkeste Ideal Industries 'StripMaster. På grunn av kvaliteten på dem, kan ett par ikke strippe hver trådmåler, så for bruk utenfor denne Instruksjonsboksen, vil du sannsynligvis komme inn i et behov for et 2dre par (eller forskjellige størrelser). Husk at vi bruker 20 gauge wire i dette prosjektet.
    • 8-22 Gauge Strippers eller Inserts
    • 20-30 Guage Strippers eller Inserts
    • StripMaster Frame, hvis du bestilte innlegg snarere enn et 2dre par, og angre på det, som jeg gjorde.
  • Wire cutters (saks eller negler clippers arbeid, bare noe å kutte tynn ledning med)
  • En logisk analysator. Teknisk valgfritt, men det hjelper feilsøk kommunikasjonsprogramvare og verifiser maskinvareverk.

    • Jeg bruker DSO203-oscilloskopet med tredjeparts logikkanalysatorprogramvare, men det er også billige analysatorer. Med mindre du vet at du trenger en fancy, bare få en billig en. Sigrok tilbyr åpen kildekode programvare som fungerer med en rekke forskjellige enheter.
  • En voltmeter ville værepraktisk.

Ekstra verktøy som trengs fra da av:

  • Løfteverktøy til overflatemontering (Temperaturstyrt: Reflow ovn og / eller varmluftspistol)
    • Her er en instruksjon om å lage en reflowovn
    • En varmluftsloddestasjon er ikke 100% nødvendig, og så vidt jeg vet, må du kjøpe en.
  • Optisk kontrollutstyr (for eksempel et USB-mikroskop)
    • Dette er mikroskopet jeg bruker, så vidt jeg vet er det en av de beste billigene.
  • Presisjonspincetter for plassering av deler (så små som disse er, de vil virke store når du bruker dem)

    • Her er et billig sett

    ALLE VERKTØYER FRA HER PÅ ER OPTIONELL

  • En JTag-emulator. JTAG ble laget for å gjøre det enkelt å kvalitetssikre nymonterte PCB.
    • Pass på at emulatoren du kjøper er kompatibel med enhetene du bruker i ditt design. Denne er brukt til ESP32. Hvis du bestiller ESP32 Programmerer, se på neste trinn og vurder å bestille ESP32-utviklingsbrettet derfra, heller enn DigiKey.
  • Solder stencil skriver / applikator. Jeg kjøpte CYBRES SP2421, men føler at det kan være bedre alternativer jeg ikke har funnet ennå. Som et minimum, legg til avstandsstykkene i handlekurven din når du bestiller stencilen din (fra OSHPark).
  • Plukk og plasser maskin (for repeterbar automatisert montering, mer for småskala masseproduksjon)
    • Jeg kjøpte LitePlacer (på et lån, med alle mine andre verktøy), men jeg ser et billigere muligens bedre alternativ.
    • Husk at profesjonelle forsamlingstjenester ikke er veldig dyre i større mengder.
  • 3D-skriver (hvis du har en), for å teste ut kabinettdesign.
  • CNC Mill (hvis du har en)
    • Flott for å lage enestående toppkvalitets kabinetter, eller andre ting som støpeformer for sprøytestøping.
    • Flott for å lage mekaniske deler som kobler kretsene til den virkelige verden.
    • Veldig verdifullt (tidvis) for å lage PCBer lokalt. For små kretser vil du kjemisk etse spor, men trenger fortsatt en mølle for Vias, brettformer / cutouts, panelisering / depanelizing etc.
  • PCB Design programvare (For å designe PCB eller endre design)

    • EagleCAD (parret med Fusion360 for 3D modellering) er det jeg har brukt siden siden før den ble kjøpt av AutoDesk. Hvis du har et stort eller kommersielt design (diskvalifiserer deg fra en gratis lisens) og ikke har penger til en oppgradert lisens fra AutoDesk, er gratis og åpen kildekode, men ikke så luksuriøse alternativer, KiCAD (parret med FreeCAD). KiCAD Jeg føler meg også en brattere lærekurve.

Trinn 3: Bli tilkoblet

Forberedelse:

Det er smart å lage programvare og funksjoner før du forplikter deg til å utvikle permanent dedikert maskinvare. Dette minimerer innsatsen hvis du oppdager at ideen din ikke virker, lar deg utvikle den så raskt som mulig, og lar deg enkelt legge til og fjerne maskinvare før ditt endelige design. Så for å starte opp, vil vi bare lage en breadboard-modell. Du kan gå bort fra denne nøyaktige utformingen hvis du vil, men hvis du gjør det, må du lese slutten av dette trinnet der jeg forklarer tanken bak hver del.

Deleliste:

Her er handlekurvene:

  • DigiKey Parts (jeg bruker digikey fordi de er i nærheten, så det er som om jeg har "DigiKey Prime")
    • GridConnect Parts (Hvis du kjøper JTAG programmerer for ESP32)
      • ESP32 DevKitC Development Board (leveres med kvinnelige overskrifter)
      • ESP Programmerings- og feilsøkingsverktøy (billigere enn DigiKey, hvis du allerede betaler for frakt)
        • Dette er valgfritt, og egentlig bare nyttig når du lager din egendefinerte PCB.
  • Amazon deler
    • 20 AWG Hookup Wire kit (hvis du ikke allerede har 20 gauge wire)
    • Wire Wrap (valgfritt, elektrisk tape fungerer også)
    • Container / hjørne. Jeg kjøpte min på dollarbutikken, samme for mineraloljen.
    • Mineralolje (Kjøp 2) Du trenger ikke mye for å dekke regulatorene, men mer olje = mer varmeavledning.
    • Liquid Tape, for å forsegle hullet i kabinettet der ledningene dine kommer ut.

Montering:

Se på videoen for monteringsanvisninger på ledningsnettet, du kan dempe det hvis du finner lyden super cringe verdig. Når det kommer til den delen hvor du lodde ting på brødbrettet, se denne listen for koordinater for å plassere hver tilkobling på.

Løs alle delene på breadboard som vist i videoen. Jeg har tatt med en 3d-modell av prototabellen (ikke 100% nøyaktig estetisk, men ideen er at 3D-modellen gir deg noe du kan se på selv om neste del er forvirrende. Du kan laste opp filen her og se den.

Brødbrettet har bokstaver på Y-aksen og tall på X-aksen. Vi vil bruke disse til å spesifisere hvor hver tilkobling lander. For øverste og Nedre strømbuss, la U & L spesifiser hvilken vi refererer til. Også å spesifisere positiv eller negativ buss, vi vil legge til en P eller N til U eller L. For eksempel vil "UP3" referere til den øvre positive kraftbussens tredje hull (som nummerert). Videre tillegg av brevet R, indikerer at tilkoblingen skal gjøres på omvendt side av styret.

  • Jumpers

    • Grønn: J25R & J27R, H27R & B27R (loddet isolatoren før denne jumperen)
    • Rød: H8 og H26
    • Gul: LP24 og A24, LP19 og J19 (Gjør denne jumperen sist)
    • Hvit: D28R & G28R, D30R & G30R, UP30R og I30R, UP1 og J1
    • Svart: UN6 og J6, LN19 og 19B
  • motstander

    • R1 (680 ohm) LP26R & G26R
    • R2 (120 ohm) H7R & C25R
    • R3 (680 ohm) B26 og B23
  • Kondensatorer (jeg har ikke penger til å bestille dem så har ikke nøyaktige koordinater)

    • C1-(50V 39uF) UP # R & UN # R (Noen av kolonnene, plasser bare nær de høyeste tallskolonnene, nærmere regulatoren)
    • C2 (10V 680uF) LP # R & LN # R (Ideelt innen kolonnene 20-23)
  • isola~~POS=TRUNC

    • Bruk den foreslåtte LTV-826 dobbelt isolatoren, sett pin 1 (den med prikken) på E24, og pin 4 (samme side av isolatoren men 3 pinner ned, på E27. De andre pinnene blir loddet hvor de lander på PCB.
  • Regulatorer (Alle inngangspinner på kolonne 28, utgangspinner på kolonne 30)

    • En regulator på rader: A, C, E, F, H, J
    • Ved hjelp av en dirigent uten isolasjon, finner loddetallet alle sammen toppene fra hverandre EN, når du har koblet alle 6 regulatorene, lodde enden av ledningen til UN30
  • MDB Wiring Harness
    • Grønn (MDB linje 6) = H25
    • Rød (MDB-linje 5) = A23
    • Blå (MDB Linje 4) = J24
    • Svart (MDB Linje 2) = UN29
    • Hvit (MDB linje 1) = I28
  • Pin Headers (når du setter inn DevKitC, må du orientere den slik at 5V-pinnen kommer på I1, og 3v3 pin lander på I19.

    • I1R-I19R, A1R-A19R

Det er slutten på dette trinnet! Du bør nå ha et wifi / bluetooth aktivert utviklingsbrett som kan drives av, og kommunisere med salgsautomater.

Valg av deler:

Denne delen er ment for de som vil gjøre ting litt annerledes. Kanskje du har en Arduino, eller en bringebær pi, eller du har en erstatning del for hånden for hver del som er oppført. Hva jeg skal gjøre er å gå gjennom hvordan / hvorfor jeg plukket hver del / verdi.

Først av alt trenger alt en strømkilde.

  • Mens du bare kunne strømforsyne enheten via USB-porten på utviklingsbrettet, er det noen problemer. Det siste problemet er grunnen til at jeg ikke bruker ekstern strømforsyning som en veggvorte.
    1. Du må holde en bærbar PC koblet til en relativt kort og stasjonær USB-kabel.
    2. Du kan egentlig ikke stenge maskinen helt, noe som gjør testen ting vanskeligere.
    3. I hvert fall i mitt tilfelle var ideen at det er en trådløs enhet.
    4. Det bedre alternativet er ikke mye arbeid.
  • Jeg valgte å bruke en lineær regulator fordi den er billig og rask. Men det må falle 34V ned til 5V, ta inn opp til 45V, og legg ut en anstendig mengde strøm. Dette begrenser alternativene litt (begrensede alternativer førte meg til å bestemme seg for å inkludere en overflatemonteringsenhet i breadboard-modellen), vårt 34V til 5V scenario for MDB, betyr det at vi får 15% effektivitet, noe som overskrider mye varmegenerering. Regulatorene har faktisk så mye varme som genereres, at mengden strøm vi kan komme ut av dem er sterkt begrenset av termiske egenskaper. Når det er sagt, skjønner jeg egentlig ikke at alle har en søppelcomputer som ligger rundt, de kan bare rive en betydelig kjøleboks av, også dette var neppe tilstrekkelig kjøling for enheten bare sitter der i utgangspunktet tomgang. I stedet for å benytte seg av en ekstern strømforsyning, eller en mer kompleks SMPS, har jeg bestemt meg for å legge til flere lineære regulatorer parallelt, og senke enheten i mineralolje.
    • Mineralolje er ikke-ledende og kan brukes som kjølevæske. Det finnes ingen tilgjengelige mer ferske former for dette, hvis du prøver å kontakte 3M om deres Novec produktlinje (høyere termisk ledningsevne, brannhemmende, etc.), vil du etter hvert finne ut at det er strenge miljøregler og krav som begrenser tilgangen til produktet. Når det gjelder kjøling, er det ikke det beste kjølevæsken, men det har 10x bedre termisk ledningsevne enn luft. Når det gjelder plastbeholderen som holder væsken, avhengig av plasten den er laget av, er det sannsynligvis enten like termisk ledende eller mer ledende, så kort sagt er den eneste flaskehalsen for avkjøling isolasjonens overflate, overføring av varmen til mineraloljen. Dette er grunnen til at heatsinks ble lagt til, spesielt med tanke på dataarkverdiene (som ble brukt til å bestemme 6 Regulatorer = 1 Amp), refererer til regulatorene som er overflatemontert til en 4-liters PCB med termiske vias og lignende. Hvorfor 1 amp? Utviklingsbrett bør ha behov for maksimalt 1 Amp til enhver tid, og mye mindre under de fleste operasjoner. 1 Amp-funksjon sikrer bare at strømmen ikke blir en skjult årsak til uregelmessig oppførsel senere. Til slutt, på mineralolje, er isolatorene orientert slik at konveksjonen oppstår naturlig, og sidene med mest overflateareal er der all oljen flyter over.

Deretter trenger vi en prosessor.

  • Jeg opprinnelig brukte Particle's Photon Board for dette prosjektet, det ble foreslått for meg av en fyr som ønsket å bruke deres web IDE med enheten jeg gjorde, og da visste jeg ingenting før Arduino, så var imponert over det var wifi og det tilbød 9 bit UART, så jeg var akkurat enig. Hvis du har grunn til det, kan du bruke ganske mye noen arduino, alle synes å tilby 9 bit UART. Raspberry pi virker ikke, men det er et bitbanging bibliotek eller to for det. Bitbanging, for meg, virker bare som en masse rote rundt for et dårligere resultat. Som du kanskje har lagt merke til, tilbyr ESP32 ikke 9 bit UART, men dersom du dykker dypt inn i dokumentasjonen, kan du eller ikke finne noen måter du kan jobbe rundt, for eksempel å manipulere paritetsbiten (lett når sender, hardt når du mottar). Hvis du har en USB til UART-kabel / adapter, kan det være mulig å tilpasse det til 9 bit UART. Jeg har søkt gjennom alle dataarkene til hver brobit på digikey, og bare to chips tilbyr 9 bit uart, og de er laget av MaxLinear (ikke FTDI), og jeg har ikke funnet noen USB-kabler / adaptere som bruker deres brochip i den, så hvis du har en USB til UART-adapter, støtter det sannsynligvis ikke 9 bit UART. Men som sagt, det betyr ikke at det kan eller ikke kan brukes med en 9 bit UART, det er bare mye mer arbeid og lesing av n ting. Uansett, da jeg oppdaget ESP32-modulen, hadde jeg til hensikt å bruke den i en egendefinert PCB, og det sto ut som svært dyktig maskinvare som tilbød Wi-Fi og Bluetooth til en uovertruffen pris (da finner jeg ut at det også er en veldig populær hobbyistisk ting også).
  • Hvorfor bruker vi ikke bare en bærbar prosessor? Det er rett og slett ikke det enkleste / enkleste / raskeste alternativet.

Til slutt, isolatoren

  • Den valgte isolatoren har en maksimal stigning / falltid på 18uS og en typisk

    økning / falltid på henholdsvis 3 og 4 u. Dette er en 1uS forskjell, som ikke forvrenger datakommunikasjon og faller ganske nær 1% timing nøyaktighet protokollen spesifiserer (1uS feil ut av 104uS). 18uS av stigning / falltid, være konsistent / identisk (også under 104uS), forkaster / forsinker dataene så mye tid uten å forvride det. Det nåværende overføringsforholdet skjer i høyden rundt 15mA, og det er rimelig å tro at det vil forbli over 100% overføring i de fleste situasjoner, så for en rask prototype velger jeg denne. Også fordi jeg plukket det ved en tilfeldighet tilbake da jeg ikke visste at disse tingene gjaldt mye.

Valg av delverdier:

Formelen er R1 = Vp / 5mA. 5mA er en generisk / standard strøm og kan justeres. Particle Photon Board gir opptil 25mA per IO pin, så dette er en god verdi. Partikkel opererer på 3,3 V, så Vp = 3,3 V, derfor er formelen Rl = 3,3 V / 5mA = 660 Ohm. Justerer dette for nærmeste standardmotstandsverdi, vi får 680 ohm. Dobbeltklikk strømmen som høyere motstandsverdien resulterer i (I = 3,3 V / 680Ohms), får vi 4,9mA. Pin-strømmen er høy nok til at verdien av verdien innenfor motstandens nøyaktighet / toleranse ikke må kontrolleres.

Formel for R2 = (Vp - Vf (maks)) / (Hvis * CTR (min)). Den andre delen (Hvis * CTR (min)) representerer overført strøm, som må være 15mA eller mer. Ved å velge en isolator med et minimum nåværende overføringsforhold på minst 100% @ 10mA, finner vi at CTR skjer for å være i topp på ca 15mA. Dette fungerer, men er på ingen måte en langsiktig løsning på grunn av tette toleranser, så vi må finne en ny regulator i noen alvorlige design. Plugging i verdiene til denne regulatoren får vi R2 = (3.3V - 1.4V) / (15mA * 1), forholdet jeg nettopp kalte det 1 i stedet for å finne ut hva som er på grafen, er det trygt å gå opp til 20mA, husk at vi begrenser overskytende strøm på den andre siden. Ved å løse denne ligningen får vi 127 ohm, som hvis vi runder til neste laveste motstandsverdi, får vi 120 ohm. Dobbeltkontroll, dette gir oss et minimum på 15 milliamps på begge sider.

Formel for R3 = (5V - Vf) / 10mA. 10mA er en tilfeldig / generell verdi, og isolatoren som brukes fungerer godt med 5mA, for å produsere 5mA på den andre siden. Vi kan tegne opptil 15mA, men vil bare tegne 5mA. For å gjøre dette, er det like enkelt som å plugge verdiene inn i ligningen. (5v - 1.4V) / 0.01A = 720. Dette er imidlertid svært nær de 680 ohmene som brukes i R1, så la oss redusere den unike deltellingen og bare bruke samme verdi. Dobbeltkontroll selvfølgelig, vi øker bare ca 0,2 mA, så alt er bra.

Trinn 4: Få den opprinnelige koden konfigurert og lastet opp

Du må installere ARduino IDE Arduino-Core for ESP32. Hvis jeg lager en kommersiell enhet, anbefaler jeg at du bytter til å bruke Espressifs egen IDE for ESP32. Det vil være mindre buggy, utføre bedre, og sørg for å tilby alle mulige funksjoner. De jobber fortsatt med å fullføre porten til Arduino.

Nå må du få MDB-koden lastet inn på enheten, konfigurere den for enheten, og begynn å legge til alle de fancy funksjonene du har tenkt på, koble den til MDB-koden. For meg innebar dette at du lastet ned 313 Page MDB v4.2 Manual og transkriberte alle relevante sider til et program (I utgangspunktet gjorde jeg bare dette med Cashles Payment Device, men jeg jobber med å legge til resten). I stedet for å gjøre alt det, kan du se på koden min. Denne koden har gått gjennom mange endringer siden jeg sist brukte det, og jeg har ikke 24/7 tilgang til en salgsautomat, så det kan være noen få feil å trene. Å fullføre denne programvaren er min neste prioritet etter at du har publisert denne instruksen, så det kan bli tatt vare på når du kommer til dette punktet, og selv om ikke, er det fortsatt mye bedre å trene noen få feil enn å skrive alt fra ripe. Pass på å sjekke at maskinvaren din fungerer, før du antar at koden ikke fungerer. Koble en logisk analysator til pinnene og sammenlign hva enheten din mottar, til hva den leser, og hva enheten skal sende, til hva den faktisk sender. Jeg har tatt med noen bilder for å gjøre det klart hva du bør se på en logikkanalysator.

Når du begynner å jobbe med koden min, bør det være enkelt hvis du følger med det i MDB-håndboken også. Hvis du bruker det, må du sende inn eventuelle forbedringer / endringer du gjør. Dette er mitt første program og er fortsatt det eneste programmet jeg noensinne har jobbet med. Også det er første gang jeg bruker github, så synd om det er litt uorganisert. Enten du bruker koden min eller går på egen hånd (det er mye, jeg må fortsatt dykke inn i en større EVA-DTS manual for å koble til MDB-koden), det er på tide å få enheten til å kommunisere intelligent med maskinen, så gjør søknaden din og lenke den til MDB-koden. Få enhetens hovedfunksjonalitet til å gå. Legg til mikrofoner, motorer, uansett hvilken funksjon du trenger og få alt som er satt opp også. Få enhetens funksjonalitet og design ferdiggjort før du går videre, da det er vanskeligere og dyrere å gjøre endringer i tilpassede kretser.

For de som bruker annen maskinvare som ikke støtter 9 bit UART:

Hvis du har valgt å bruke noe som en bringebær pi, eller en USB til UART-kabel, kan dette være interessant. MDB krever 9 data bitkommunikasjon. Mye UART-maskinvare støtter ikke dette. ESP32 er en av de slike enhetene. Ustøttet betyr ikke at det er umulig, og etter å ha sett på dokumentasjonen på ESP32 ser jeg noen forskjellige måter vi kan få til å skje. Hvis du bruker annen maskinvare, er disse noen muligheter du kan se på.

  • Sende data
    • Manuelt beregne ønsket paritetsinnstilling for hver bit før sending.
    • Manuelt laster inn registerene med dataene, og pariteten (uklart om dette kan gjøres på ESP32)
    • Bitbanging (garantert men ressursintensiv)
  • Mottar data
    • Motta data, og bruk paritetsfeilavbrudd / flagg (hvis maskinvaren har den) for å fortelle hva den 9. databit er. (Dette ville kreve at data med dårlig paritet ikke bare er bortkastet)
    • Manuell lesing fra registeret bit for bit etter hvert som hver bit kommer inn. (Mer arbeidsintensiv)
    • Bitbanging (garantert men ressursintensiv)

Det er ikke 100% klart hva som vil fungere bare ved å se på Technical Reference Manual (i hvert fall på ESP32), da vi bruker pariteten på måter det ikke var ment å bli brukt, så det vil ikke bli dokumentasjon på hvordan du bruker den på denne måten. De eneste virkelige måtene å vite hva som skjer er å teste noen kode ut og se hva som fungerer. En endelig notat er at ESP32 har et "Edge Change" register / avbryt, som gir oss mulighet til å oppdage en Hard / Bus reset og har 100% MDB compliance. En hard / buss reset, er når bussen blir trukket aktiv i omtrent 100mS eller så, noe som ikke er en del av UART-kommunikasjon, så det er fint at ESP32 skjer for å ha denne funksjonen. Funksjonelt Hard / Bus-reset er imidlertid ikke nødvendig for å støtte da protokollen spesifiserer at alle eksterne enheter som ikke svarer på det, bare får en adressert (UART-lesbar) tilbakestillingskommando sendt til dem.

Trinn 5: Start Prototyping

Fra nå av burde du vite mye mer om elektronikk. Prosjektet ditt vil sannsynligvis gå fra dette Instruksjonsliste også på dette punktet, så dokumentasjonen herfra vil endres fra å fortelle deg hvordan du gjør ting (det ville være et helt annet elektronikk / SMT-emne), for å nevne bemerkelsesverdige ting jeg kjente som Jeg jobbet på mitt eget prosjekt. Forhåpentligvis er det nyttig informasjon et sted i dette trinnet.

Prototyping for meg, undersøker alle delene og finner lavest mulig pris, og erstatter delene i skjematisk du tidligere brukte. Også en hel del prøve og feil som du lærer om å designe og montere tilpassede kretser. Du prøver å forbedre på en jobber allerede design med endringer for å finne den optimale balansen mellom billig og kvalitet (vær så sikker på at endringene ikke ødelegger systemet). Hver brøkdel av en krone legger til. Pass på at du sammenligner priser fra mer enn én kilde (Octopart gjør en god jobb med dette) og balanserer om det er verdt å bestille fra en kilde eller flere kilder. Jeg holder et regneark / BOM i åpent kontor for å organisere delene og alle sine priser. Jeg vil inkludere et eksempel / en mal du kan bruke. Jeg pleide å inkludere en bit.ly lenke til hver del der jeg fant den til den prisen, men jeg tror jeg sluttet å gjøre det fordi det ble kjedelig på grunn av frekvensen jeg ville finne en bedre del. EagleCAD Jeg tror nå har en slags BOM-program også. Jeg er sikker på at et enkelt regneark er mindre kraftig, men mindre komplisert først også.

Etter hvert som designene dine blir mindre, har de små detaljene større betydning. Tykkelsen på loddemønsteret, formen / størrelsen på sporene til passivene dine, mekanisk stress (det begynner å knekke keramikk og loddetråd), etc. Dette dokumentet snakker om mye av det, jeg skulle ønske jeg hadde kjent med disse tingene før jeg begynte. Jeg prøver å bruke 0402 som standardstørrelse for alle passivene mine. En ting du må huske på er montering, kan du pålidelig montere delene den størrelsen og den tett sammen? Eller har du planer på hvordan å lodde en dobbeltsidig design?

  • Les hvert enkelt ord i hvert dataark, jeg har hatt en strøm IC ikke fungerer riktig fordi jeg savnet en fotnote i en tabell med verdier.

  • Ikke ta snarveier, de eksisterer ikke.

  • Se opp fiducials for automatisk montering.
  • Slå opp panelering hvis du vil lage ganske mange kopier av det.

Jeg anbefaler ESP32 på grunn av at det tilbyr anstendig strøm, wifi, bluetooth og noen andre små ting alt for $ 3,75 per modul. Selv om jeg ikke er fan av å bruke moduler, er det nødvendig for mindre prosjekter hvor 10 grand eller mer i FCC lisensavgifter ikke er et alternativ. Du kan utnytte FCC-sertifisering av ESP32 i ditt eget design. Hvis jeg ikke gjør feil, må all kommersiell elektronikk bli sertifisert av FCC, som alltid skal koste minst tusen eller to for et pass eller en feil. Så vurder å kjøpe en spektrumanalysator for å gjøre noe for testing. Ikke kjøp den før du trenger den xD Jeg kjøpte en og har aldri brukt den, bare et stort sløsing med penger så langt.

Vurder å implementere JTAG for å få PCBen til å inspisere seg digitalt etter montering. Som nevnt tidligere har ESP32 sitt eget programmeringsverktøy.

Vær oppmerksom på egenskapene til PCB-fabrikasjonstjenesten du velger. Hvis du ser på bildene i dette trinnet, ser du forskjellen mellom OSHPark (en generell / bulk hobbyist-tjeneste) og et kinesisk selskap.

Trekk ut en tykkelse eller noe og sørg for at du vet hvor stor / liten delene du bruker. På denne modellen vist (Proto2, min første PCB), fikk jeg motstandene og kondensatorene, og tenkte "de så mye på skjermen" xD

"Jeg håper du feiler!" - Dave fra EEVBlog i en av hans videoer. Feil, betyr at du lærer, og gutten gjorde jeg mye dyre læring.

Jeg har tilfeldigvis Eagle-filene til dette forumet (Proto2).

Her er OSH Park Order også.

Trinn 6: Prøv igjen! og igjen! og igjen! (Mer prototyping og mye læring)

Du vil mislykkes, og du vil prøve igjen! Og du vil mislykkes igjen, og du vil prøve igjen! (Kartfiler tilgjengelig i hver lenke) Den siste biten er det som er viktig, deg vil Prøv igjen! Med hver feil / feil vil du lære noe nytt.

Denne prototypen (proto 3 i de to første bildene), byttet jeg over til å bruke mer realistisk håndsettbare passiver. Dette gikk bra, men jeg forsømte å se på andre potensielle størrelsesproblemer og kom til oppfatningen at jeg egentlig ikke kan plassere Power IC, og det var også for lite for OSHPark å kunne gjøre et kvalitetsfotavtrykk for, med loddemaske mellom pads. På dette tidspunktet skyndte jeg meg til å lage en fungerende MVP (jeg hadde en fyr engstelig å bruke den, så det var litt press), bestemte jeg meg for å forenkle litt.

Her er OSHPark-lenken til Proto3-bordet.

Proto-4, vist i 3.-5. Bilder, gikk jeg tilbake til å bruke et utviklingsbrett for å unngå tid og problemer forbundet med å prøve å sørge for at modulen var loddet riktig, og unngå problemene med wifi jeg ventet. Jeg byttet også til en enklere / større strømforsyning. Dessverre forsømte jeg å lese en fotnote i dataarket for denne strømforsyningen (nå som jeg begynte å ha det til å skynde seg), og det endte ikke med å gi riktig spenning 90% av tiden. Jeg tror jeg bare bestemte meg for å drive den gjennom USB-porten, og kommunikasjonen fungerte heller ikke! Jeg husker egentlig ikke den nøyaktige årsaken, men husk å tenke på at jeg virkelig overvurderte optiske isolatorer og bare antas at hver enkelt er rask nok, men jeg tror jeg kan bare ha blandet opp motstandsverdiene som er i et rush og å miste søvn. Deretter bodde jeg sammen med katter, som jeg var svært allergisk mot, jeg ville våkne opp og chug nyquil (daglig) slik at dagen var utholdelig, og et monster å motvirke nyquilen, så gå og jobbe en hel dag, og opphold deretter å jobbe med disse tingene (eller jobbe hjemmefra), hopp over søvn, inhaler litt adrenalin, så jeg kunne puste bedre (katter ga meg litt funky astma hver dag) og holde meg våken mer. Jeg har gjort mange dårlige helsevalg til fordel for gitt'n er ferdig.Ikke glem å sove, sovevann forårsaker søvnløshet, noe som fører til redusert produktivitet. Ikke glem å spise, selvsagt, som reduserer produktiviteten. Ikke glem å tregere og gjøre ting riktig, ingen snarveier, eller du sparer tid og penger (i beste fall lærer du hva du ikke skal gjøre).

Her er OSHPark-lenken til Proto4-bordet.

På dette tidspunktet hadde jeg hatt det og besluttet å gå tilbake og fokusere på å gjøre enheten slik den burde være, sakte og stabil. Men ikke uten en siste lav innsats skutt for å få en klar til bruk reproduserbar prototype som jeg kan sende til fyren jeg visste, og gjøre ham glad. Vi presenterer Proto-5, den "for enkle å mislykkes" modellen, i utgangspunktet den samme kretsen som Proto-1, bare litt mer avansert. Brukt pinhoder slik at jeg ikke ville kaste bort fotonbrett i tilfelle en enhet bryter eller ikke fungerer, slik at et Electron (cellesignal) bord lett kan byttes inn der. Whelp, rushing det, glemte en tilkobling eller to, det virket ikke engang, selv om det ikke var mulig å fikse det ved å løse på flere kondensatorer, etter å ha koblet til forbindelsen jeg glemte å lage. Jeg syntes å være et strømforsyningsproblem. Snarere enn å undersøke årsaken, ble rushed, jeg droppet den og flyttet på en gang. Gjorde alle mine gråt internt, og fortsatte å bevege seg fremover.

Her er OSHPark-lenken til Proto5-platen.

Trinn 7: Få ditt endelige design og få det til produksjonsklar

Jeg gikk endelig tilbake og satte en anstendig innsats på å lage en enhet ved hjelp av Espressifs ESP32-modul. Styret ble panelerisert for raskere montering (i den største størrelsen som passer i min brødristers ovn og loddetrommelapplikator), jeg undersøkte strømforsyningsalternativene og kom opp med det samme svaret som Proto2 & 3, så gjorde det ved å bruke den lille IC nå at jeg hadde en plukk og en maskin for å hjelpe til med montering (selv om jeg ikke tror det er nødvendig lenger). Jeg bytte pcb fabricators for mer presise evner og lavere kostnader, gikk med et kinesisk selskap (noe jeg ikke vil gjøre igjen). Generelt fikk jeg min handling sammen og fikk et anstendig styre laget. Så mye feil og utgifter over en krets som i utgangspunktet er to isolatorer T-T.

OSHPark-lenken til Proto6 er her. << Selv om jeg tror jeg har gjort noen (mindre / ikke-kritiske) endringer etter at du har sendt inn denne eksakte filen. Legg merke til markeringene fra MDB-kontaktene som angir kjønn av kontakt som går der, det er en enkel måte å unngå å sette en kontakt på feil side. Jeg kan ikke gjøre endringer i dette fordi jeg ikke har en lisens til å bruke Eagle lenger (også arbeidsløs n ille ting som det), men hvis du gjør det, anbefaler jeg at du bytter isolator for å bruke to TCP817 isolatorer i stedet for LTV826S. Legg også til JTag mens du er på den til ESP32 (side 14, og finn overskriftene som passer til de som brukes på ESP32-programmereren for å bruke det.) Feil å øke størrelsen på passivene som brukes, og selvfølgelig legge til ekstra maskinvare du personlig trenger. Hvis du ikke gjør noen endringer i det, anbefaler jeg at du minst vurderer designen og sørger for at BOM-delene egentlig er de som passer til PCB. Denne siste designen gikk gjennom mange endringer i siste øyeblikk og endringer. Jeg kan fortelle deg at dioden i BOM er en jeg bestemte meg for, og den jeg faktisk brukte, er her.

Hvis jeg ikke har nevnt det ennå, er det ingen overflatemonterte Minifit Jr-kontakter, så kantmontering dem slik jeg har, er den mest kompakte metoden for å gjøre det. Det er en kontakt som leveres forhåndsbelastet med pins i den som kan tilpasses som en kantmontert kontakt. For den andre kontakten må du sette inn krympede tilkoblinger, og dette er så kompakt som det blir. Hvis du stemmer overens med PCB-tykkelsen og wiremåleren, burde du få den til å passe sammen ganske bra. Husk hvordan disse kontaktene påvirker monteringsprosessen i masseproduksjon. Jeg har kontaktet Molex om det, og de sier at du må bestille millioner av enheter og ting som det for å få en ny / tilpasset tilkobling. Vurder å lage din egen hvis du tror du kan finne ut det, og det er et problem for deg også (ikke å ha en SMT-kontakt).

Videoen refererer til en CNC-maskin, snakker om en jeg planla å lagre for (lomme nc), ikke Shapeoko 3. Disse videoene var år siden.

Lykke til med vending prosjektet, jeg håper dette hjelper og du lykkes.

Runner Up i

PCB-konkurranse