Talaan ng mga Nilalaman:
- Hakbang 1: Pagdidisenyo ng PCB
- Hakbang 2: Pagdidisenyo ng Protocol
- Hakbang 3: Pagdidisenyo ng Firmware
- Hakbang 4: Pag-interfacing sa pamamagitan ng Flowcode
- Hakbang 5: Iba Pang Mga Pamamaraan sa Pag-interface
- Hakbang 6: Tapos na Produkto
Video: Naka-embed na Universal Interface Board - USB / Bluetooth / WIFI Control: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Madalas kong makita na lumilikha ako ng mga aklatan para sa mga bagong naka-embed na module mula sa simula batay sa datasheet ng aparato. Sa pagbuo ng silid-aklatan nahanap ko na natigil ako sa isang ikot ng code, sumulat ng libro, programa at pagsubok kapag tinitiyak ang mga bagay na gumagana at walang bug. Kadalasan ang mga oras ng pag-ipon at programa ay maaaring maging mas matagal pagkatapos ng oras na kinakailangan upang mai-edit ang code at sa gayon isang paraan upang maputol ang mga hakbang na ito kapag ang pagbuo ay magiging napaka-madaling gamiting.
Madalas ko ring makita na nais kong mag-interface ng isang naka-embed na module sa isang PC. Kung ang module ay hindi partikular na may koneksyon sa USB na kung saan ay madalas na kaso pagkatapos ay sa pangkalahatan ay kailangan mong bumili ng isang sobrang presyo na USB converter na gagawa ng isang solong trabaho tulad ng SPI o I2C lamang.
Para sa mga kadahilanang ito napagpasyahan kong likhain ang unibersal na board ng interface. Dinisenyo nito upang payagan ang madaling mga komunikasyon batay sa PC na may naka-embed na mga module.
Ang naka-embed na mga tampok ng interface ng board na naayos ko ay kasama.
- Digital I / O
- I2C
- SPI
- UART
- PWM
- Servo Motor
- Input ng ADC
- Output ng DAC
Ang lahat ng ito ay maaaring magamit nang ganap na nakapag-iisa.
Maaaring kontrolin ang interface board sa pamamagitan ng isang koneksyon sa USB sa PC, ngunit mayroon ding opsyonal na mga koneksyon sa WIFI o Bluetooth module upang payagan ang board na magamit nang malayuan o sa isang senaryo ng uri ng IoT.
Sa pamamagitan ng paggamit ng standard 2.54mm pitch SIL header posible na direktang ikonekta ang mga kable ng dupont na babae sa pagitan ng board at ang naka-embed na module na nagpapahintulot para sa mabilis, maaasahan at mga solder na libreng koneksyon.
Naisip ko rin ang tungkol sa pagdaragdag ng mga bagay tulad ng CAN, LIN, H-bridge atbp ngunit maaari itong dumating sa paglaon na may isang v2 na rebisyon.
Hakbang 1: Pagdidisenyo ng PCB
Kapag ang pagdidisenyo ng PCB nais kong subukan at panatilihing simple ang mga bagay hangga't maaari. Kapag magtatayo ka ng mga board sa pamamagitan ng kamay mahalaga na magdagdag lamang ng mga bahagi kapag gumawa sila ng isang tukoy na layunin at gumamit ng maraming mga panloob na tampok ng microcontroller hangga't maaari.
Sa pagtingin sa aking ginustong tagapagtustos ng electronics nakakita ako ng isang chip na komportable ako sa mayroon akong mga tampok na hinahanap ko at isang makatuwirang gastos. Ang chip na aking na-landing ay ang PIC18F24K50.
Gamit ang magagamit na 23 I / O mga pin pinapayagan ako ng mga tampok na ito
- Digtal I / O
- I2C
- SPI
- UART
- PWM x 2
- Servo Motor x 6
- Input ng ADC x 3
- Output ng DAC x 1
- Ang I / O ay hinihimok mula sa 5V o 3V3
- LED status
Ang isang sagabal ng IC na pinili ko ay mayroon lamang itong isang UART paligid at sa gayon ang paggamit ng paraan ng pagkontrol ng Bluetooth o Wifi ay titigil sa iyo na magamit ang koneksyon sa UART.
Ipinapakita sa mga imahe sa itaas ay ang natapos na eskematiko at PCB.
Hakbang 2: Pagdidisenyo ng Protocol
Ang unang hakbang sa pagdidisenyo ng protokol ay ang pagpapasya kung anong partikular ang kakailanganin mong gawin ng board. Ang mga pinaghiwalay na bagay ay nagdaragdag ng isang mas mahusay na antas ng kontrol samantalang ang pagsasama-sama ng mga bagay ay pinapasimple ang interface at binabawasan ang trapiko ng comms sa pagitan ng board at ng PC. Ito ay isang laro sa pagbabalanse at mahirap gawing perpekto.
Para sa bawat pag-andar ng board dapat mong ipahiwatig ang anumang mga parameter at pagbalik. Halimbawa ang isang pagpapaandar upang mabasa ang isang input ng ADC ay maaaring magkaroon ng isang parameter upang tukuyin kung aling input sa sample at isang halaga ng pagbabalik na naglalaman ng resulta.
Sa aking disenyo narito ang listahan ng mga pagpapaandar na nais kong isama:
-
Digital I / O
- SetPin (PinNumber, Estado)
- Estado = GetPin (PinNumber)
-
SPI
- Pauna (SPI Mode)
- DataIn = Transfer (DataOut)
- ControlChipSelect (Channel, Estado)
- SetPrescaler (Rate)
-
I2C
- Pauna ()
- Simula ()
- I-restart ()
- Itigil ()
- SlaveAck = Ipadala (DataOut)
- DataIn = Tumanggap (Huling)
-
UART
- Pauna ()
- TX Byte (DataOut)
- Magagamit ang Bytes = Bilang ng RX ()
- DataIn = RX Byte ()
-
SetBaud (Baud)
-
PWM
- Paganahin (Channel)
- Huwag paganahin (Channel)
- SetFrequency (Channel, Frequency)
- GetMaxDuty (Tungkulin)
- SetDuty (Tungkulin)
-
Servo
- Paganahin (Channel)
- Huwag paganahin (Channel)
- SetPosition (Channel, Posisyon)
-
ADC
ADCsample = Sample (Channel)
-
Ang DAC
- Paganahin
- Huwag paganahin
- SetOutput (Boltahe)
-
WIFI
- SetSSID (SSID)
- Itakda ang Password (Password)
- Katayuan = CheckConnectionStatus ()
- IP = GetIPAddress ()
Ang mga parameter ay ipinapakita sa mga braket at ang mga pagbalik ay ipinapakita bago ang katumbas na simbolo.
Bago ko simulan ang pag-coding nagtatalaga ako ng bawat function ng isang command code na nagsisimula sa 128 (binary 0b10000000) at nagtatrabaho paitaas. Ganap na idokumento ko ang protocol upang matiyak na sa sandaling ang aking ulo ay nasa code na mayroon akong isang magandang dokumento na magre-refer muli. Ang buong dokumento ng protocol para sa proyektong ito ay nakakabit at may kasamang mga papasok na mga code ng utos at mga lapad ng bit.
Hakbang 3: Pagdidisenyo ng Firmware
Kapag ang protokol ay itinatag ito ay isang kaso ng pagpapatupad ng pag-andar sa hardware.
Nag-aampon ako ng isang simpleng diskarte sa uri ng makina ng estado kapag nagkakaroon ng mga system ng alipin upang subukan at i-maximize ang potensyal na utos at throughput ng data habang pinapanatili ang firmware na simple upang maunawaan at ma-debug. Ang isang mas advanced na system tulad ng Modbus ay maaaring magamit sa halip kung kailangan mo ng mas mahusay na pakikipag-ugnayan sa iba pang mga konektadong aparato ngunit nagdaragdag ito ng overhead na magpapabagal sa mga bagay.
Ang machine ng estado ay binubuo ng tatlong mga estado:
1) Naghihintay para sa mga utos
2) Tumatanggap ng mga parameter
3) Sumagot
Ang tatlong mga estado ay nakikipag-ugnayan tulad ng sumusunod:
1) Dumaan kami sa mga papasok na byte sa buffer hanggang sa magkaroon kami ng isang byte na may pinakamahalagang itinakdang bit. Kapag natanggap namin ang naturang byte sinusuri namin ito laban sa isang listahan ng mga kilalang utos. Kung makakita kami ng isang tugma pagkatapos ay magtatalaga kami ng bilang ng mga byte ng parameter at ibalik ang mga byte upang tumugma sa protocol. Kung walang mga byte ng parameter pagkatapos ay maaari nating isagawa ang utos dito at alinman lumaktaw sa estado 3 o i-restart ang estado 1. Kung may mga byte ng parameter pagkatapos ay lumipat kami sa estado 2.
2) Dumaan kami sa mga papasok na byte na ini-save ang mga ito hanggang sa mai-imbak namin ang lahat ng mga parameter. Kapag nasa amin na ang lahat ng mga parameter ay nagsasagawa kami ng utos. Kung may mga return byte pagkatapos ay lumipat tayo sa yugto 3. Kung walang mga byte na ibalik upang ipadala pagkatapos ay bumalik kami sa yugto 1.
3) Dumaan kami sa mga papasok na byte at para sa bawat byte ay sinusuportahan namin ang echo byte na may wastong return byte. Kapag naipadala na namin ang lahat ng mga byte na bumalik ay bumalik kami sa yugto 1.
Gumamit ako ng Flowcode upang idisenyo ang firmware dahil maganda itong ipinakita sa aking ginagawa. Ang parehong bagay ay maaaring magawa nang pantay na mabuti sa Arduino o iba pang mga naka-embed na wika ng programa.
Ang unang hakbang ay upang maitaguyod ang mga komunikasyon sa PC. Upang magawa ito, kailangang mai-configure ang micro upang tumakbo sa tamang bilis at kailangan nating magdagdag ng code upang himukin ang mga peripheral ng USB at UART. Sa Flowcode ito ay kasing dali ng pag-drag sa proyekto ng isang USB Serial na bahagi at isang sangkap ng UART mula sa menu ng sangkap ng Comms.
Nagdagdag kami ng isang RX makagambala at buffer upang mahuli ang mga papasok na utos sa UART at regular naming poll ang USB. Maaari naming pagkatapos sa aming proseso ng paglilibang ang buffer.
Ang proyekto ng Flowcode at nakabuo ng C code ay nakakabit.
Hakbang 4: Pag-interfacing sa pamamagitan ng Flowcode
Ang simulation ng Flowcode ay napakalakas at pinapayagan kaming lumikha ng isang bahagi upang makipag-usap sa board. Sa paglikha ng sangkap maaari na lamang naming i-drag ang sangkap sa aming proyekto at agad na magagamit ang mga pagpapaandar ng board. Bilang isang idinagdag na bonus anumang umiiral na sangkap na mayroong SPI, I2C o UART paligid ay maaaring magamit sa simulation at ang data ng comms ay maaaring ma-pip sa Interface Board sa pamamagitan ng isang sangkap ng Injector. Ang mga nakakabit na imahe ay nagpapakita ng isang simpleng programa upang mag-print ng isang mensahe sa display. Ang data ng comms na ipinadala sa pamamagitan ng Interface Board sa aktwal na display hardware at ang sangkap na pag-setup na may I2C Display, I2C Injector at Interface Board na mga bahagi.
Ang bagong SCADA mode para sa Flowcode 8.1 ay isang ganap na idinagdag na bonus na maaari naming kumuha ng isang programa na gumagawa ng isang bagay sa Flowcode simulator at i-export ito upang ito ay tumakbo nang mag-isa sa anumang PC nang walang anumang mga isyu sa paglilisensya. Maaari itong maging mahusay para sa mga proyekto tulad ng mga test rigs o sensor cluster.
Ginagamit ko ang mode na SCADA na ito upang lumikha ng tool sa pagsasaayos ng WIFI na maaaring magamit upang mai-configure ang SSID at password pati na rin kolektahin ang IP address ng module. Pinapayagan akong i-set up ang lahat gamit ang koneksyon sa USB at pagkatapos ay ilipat sa isang koneksyon sa WIFI network sa sandaling tumatakbo ang mga bagay.
Ang ilang mga halimbawang proyekto ay nakakabit.
Hakbang 5: Iba Pang Mga Pamamaraan sa Pag-interface
Pati na rin ang Flowcode maaari mong gamitin ang iyong piniling programa sa pagpili upang makipag-usap sa interface board. Gumamit kami ng Flowcode dahil mayroon itong isang library ng mga bahagi na isinama na kung saan maaari kaming bumangon at tumakbo kaagad ngunit nalalapat din ito sa maraming iba pang mga wika.
Narito ang isang listahan ng mga wika at pamamaraan upang makipag-usap sa Interface board.
Python - Paggamit ng isang serial library upang mag-stream ng data sa isang COM port o IP address
Matlab - Paggamit ng mga utos ng File upang mag-stream ng data sa isang COM port o IP address
C ++ / C # / VB - Paggamit ng alinman sa isang paunang nakasulat na DLL, direktang pag-access sa COM port o Windows TCP / IP API
Labview - Gamit ang alinman sa isang paunang nakasulat na DLL, ang bahagi ng VISA Serial o bahagi ng TCP / IP
Kung nais ng sinuman na makita ang ipinatupad na mga wika sa itaas mangyaring ipaalam sa akin.
Hakbang 6: Tapos na Produkto
Ang natapos na produkto ay malamang na maging isang kilalang tampok sa aking naka-embed na tool kit sa mga darating na taon. Na ito ay nakatulong sa akin upang bumuo ng mga sangkap para sa iba't ibang mga display at sensor ng Grove. Maaari ko na ngayong makuha ang code nang ganap na ipinako bago mag-resort sa anumang compilation o program shenanigans.
Inabot ko pa ang ilang mga board para sa mga kasamahan upang mapabuti din nila ang kanilang daloy ng trabaho at ang mga ito ay tinanggap nang maayos.
Salamat sa pagbabasa ng aking Makatuturo Inaasahan kong nalaman mong kapaki-pakinabang ito at sana mapasigla ka upang lumikha ng iyong sariling mga tool upang mapabilis ang iyong pagiging produktibo.
Inirerekumendang:
Mga naka-print na Circuit Board - Kumpletong Proseso: 14 Mga Hakbang (na may Mga Larawan)
Mga naka-print na Circuit Board - Kumpletong Proseso: Inilalarawan ng sumusunod ang proseso kung saan lumilikha ako ng mga circuit board ng PC para sa isang-off at prototype na paggamit. Ito ay nakasulat para sa isang tao na lumikha ng kanilang sariling mga board sa nakaraan at pamilyar sa pangkalahatang proseso. Ang lahat ng aking mga hakbang ay maaaring hindi op
Digital Frame ng Larawan ng Larawan, Naka-link ang WiFi - Raspberry Pi: 4 na Hakbang (na may Mga Larawan)
Digital Frame ng Larawan ng Larawan, naka-link sa WiFi - Raspberry Pi: Ito ay isang napakadaling at murang ruta ng ruta sa isang digital photo frame - na may kalamangan na magdagdag / mag-alis ng mga larawan sa paglipas ng WiFi sa pamamagitan ng 'pag-click at pag-drag' gamit ang isang (libreng) file transfer program . Maaari itong mapalakas ng maliit na £ 4.50 Pi Zero. Maaari mo ring ilipat
Mga WiFi Bar na Naka-synchronize na WiFi Mesh: 3 Hakbang (na may Mga Larawan)
Ang Mga WiFi Bar na Naka-synchronize na WiFi Mesh: Ang proyektong ito ay isang koleksyon ng mga LED bar na may indibidwal na kontroladong mga digital na LED (WS2812b " Neopixels "). Pinapayagan nilang gawin ang mga animasyon sa kanila nang hindi sila magkakasamang nag-kable. Gumagamit sila ng isang WiFi Mesh upang kumonekta sa bawat isa, at ang
Nakakonektang Web na SMART LED Animation Clock Na May Control Panel na Batay sa Web, Naka-synchronize ng Time Server: 11 Mga Hakbang (na may Mga Larawan)
Nakakonektang Web na SMART LED Animation Clock Sa Control Panel na nakabatay sa Web, Naka-synchronize ng Time Server: Ang kuwento ng orasan na ito ay bumalik sa malayo - higit sa 30 taon. Pinangunahan ng aking ama ang ideyang ito noong ako ay 10 taong gulang lamang, bago pa ang LED rebolusyon - pabalik noong LED kung saan 1/1000 ang ningning ng kanilang kasalukuyang ningning na ningning. Isang totoo
Mga naka-print na Circuit Board (PCB) Gamit ang Laser Cutter: 5 Hakbang
Printed Circuit Boards (PCB) Gamit ang Laser Cutter: Ito ay isang bagong pag-ikot sa isang mayroon nang proseso, na nagbibigay-daan sa iyo upang makagawa ng sobrang tumpak na mga PCB. Karaniwan itong nagsasangkot ng spray painting board na tanso, pagputol ng laser ng pintura at pagkatapos ay paglalagay ng board sa isang paliligo ng Ferric Chloride upang alisin ang hindi ginustong c