Talaan ng mga Nilalaman:

SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server: 3 Mga Hakbang (na may Mga Larawan)
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server: 3 Mga Hakbang (na may Mga Larawan)

Video: SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server: 3 Mga Hakbang (na may Mga Larawan)

Video: SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server: 3 Mga Hakbang (na may Mga Larawan)
Video: Arduino with Silverlight 2024, Hulyo
Anonim
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server
SilverLight: Arduino Batay sa Kapaligiran Monitor para sa Mga Silid ng Server

Sa sandaling nabigyan ako ng gawain na maghanap para sa isang probe sa kapaligiran para sa pagsubaybay sa temperatura sa server room ng aking kumpanya. Ang aking unang ideya ay: bakit hindi lamang gumamit ng isang Raspberry PI at isang sensor ng DHT, maaari itong i-setup nang mas mababa sa isang oras kasama ang pag-install ng OS. Para sa mga ito nakuha ko ang malamig na tugon mula sa naka-blindfold na mga taong bossy na hindi namin gagawin iyon dahil mas malaki ang gastos sa oras ng trabaho upang mai-set up ito kaysa sa pagbili ng isang aparato. Ang pagkakaroon ng pagtanggap ng makitid na pag-iisip ng mga taong tulad nito para sa isang bahagi ng aking buhay ay isang bagay at nag-order ako ng ilang mga grade sa EATON na basura sa Ebay at tinawag ito ngunit napagpasyahan ko sa sandaling iyon na para sa aking sariling silid ng server ay magtatayo ako ng isang buong Open Source Arduino batay sa aparato na kung saan ay magiging mas mahusay kaysa sa kung ano lamang ang aking iniutos.

Ang proyektong ito ay code na pinangalanang SilverLight, huwag magtanong sa akin kung saan ko nakuha ang mga pangalang ito:) Tinignan ko lang ang makintab na kalahating acrylic box at nagpasya sa pangalang ito, wala itong kinalaman sa produktong microhoof kung ano ang nalaman ko pagkatapos.

Hakbang 1: Disenyo ng Hardware

Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware

Pangkalahatang-ideya ng komersyal na hardware.

Ok kaya hindi ako nagsimula sa kung kanino mahusay ang ideya na maglagay ng isang monitor ng kapaligiran sa loob ng isang ups ngunit malinaw na mayroong isang merkado para dito kaya't tingnan natin kung ano ang maaaring gawin ng mga ito:

KAPATIBILIDAD ng aparato sa pagsubaybay sa kapaligiran

Ang 10 / 100Mb Network-MS, PXGUPS, PXGPDP, at PXGMS.

Ang 10 / 100Mb ConnectUPS-X, ConnectUPS-BD at ConnectUPS-E na may FW V3.01 at mas mataas. DIMENSIONS (LXWXH)

2.26 x 1.48 x 1.15 (pulgada) 57.6 x 37.6 x 29.3 (mm) Timbang

1.19 ans (34 g)

Napaka kapaki-pakinabang na impormasyon iyan di ba? Walang alalahanin dahil hindi nila magagawa ang marami. Upang masimulan ang iyong UPS ay kailangan na magkaroon ng isa pang mamahaling addon-card para dito na ikinokonekta nito sa sensor ng kapaligiran na binibili mo nang magkahiwalay, karaniwang may karaniwang CAT5 cable (huwag mo ring subukang mag-plug ng anuman sa port na iyon dahil walang pamantayan tungkol doon). Inaangkin nila na ang aparato ay nangangailangan ng 10 minuto upang "magpainit" na sa katotohanan ay oras at sa sandaling ito ay voila nagpakita ito sa kanilang mabagal na pag-update ng java interface at mayroon kaming temperatura at halumigmig. Ang pagse-set up ng mga batay sa mga kundisyon ay madali mula sa puntong ito ngunit sino ang nagmamalasakit na bumuo tayo ng isang bagay na mas mahusay.

Ang proyektong ito ay isang pagsasama ng maraming aking mga proyekto: istasyon ng panahon ng Natalia, Shadow of phoenix. Nasusubaybayan ng kahon ang mga sumusunod na hadlang sa kapaligiran:

  • Temperatura / kahalumigmigan / heat index
  • Ang konsentrasyon ng LPG, Usok, Alkohol, Propane, Hydrogen, Methane at Carbon Monoxide sa hangin (MQ2)
  • Sensitibo ng Solar (nakasindi ba ang ilaw sa server room?)
  • Motion PIR sensor (maaari mo ring i-on / i-off ang mga ilaw mula ngayon ngayon salamat sa sensor ng paggalaw kapag may pumasok sa silid)

Ang lahat ng data na ito ay mahusay na ipinapakita sa isang LCD screen habang inilalabas din sa isang computer (Orange PI Zero) para sa karagdagang pagproseso at mga alerto. Bagaman posible na mag-hook up ng mga digital sensor tulad ng DHT at ang digital pin ng MQ2 sa OrangePI nang direkta, mas gusto ko ang paggamit ng dedikadong micros para sa mga gawaing ito at kung kailangan mong i-update din ang LCD at gawin ang iba pang mababang antas bagay na ang Arduino ay hindi lamang matatalo at mapagkakatiwalaan na tumakbo nang walang tigil sa loob ng maraming taon (bagay na katotohanan hindi isang solong Arduino na nagpapatakbo ng 24/7 na nabigo pa sa akin). Ang OrangePI na mayroong mga pagkukulang (harapin natin ito ay isang 10 $ computer) tulad ng hindi magagamit para sa mabibigat na workload, walang suporta sa bsd, ang integrated wifi ay namamaga atbp ay madaling hawakan ang maliit na workload tulad ng pagkuha ng mga pagbabasa ng sensor sa pamamagitan ng serial (USB) at pagproseso ng mga ito.

Ito ay isang napaka-simpleng proyekto sa hardware na nangangailangan ng mga sumusunod na sangkap:

  • Arduino PRO Micro
  • LCD screen 2x16 character RGB
  • Ang paghihiwalay ng switch ng module ng kapangyarihan ng AC-DC 220V sa 5V HLK-5M05 (ang mga ito ay napakahusay para sa mga proyekto ng Arduino / ESP), ito ang bersyon ng 5V / 5W!
  • 2x300ohm resistors
  • 2xleds (pula / berde)
  • Sensor ng paggalaw ng PIR
  • MQ2 sensor
  • DHT22
  • LDR
  • 2X10Kohm risistor
  • Buzzer
  • Orange PI Zero
  • mini USB data cable

Hindi ko rin ininda ang paggawa ng isang PCB para sa ginamit na regular na tinapay lamang dahil ang mga sangkap ay maaaring konektado lamang sa Arduino (tingnan ang mga larawan na nakakabit):

-DHT22 ay mangangailangan ng isang 10K pullup sa VCC (digital)

-LDR ay mangangailangan ng isang 10K pulldown sa GND (analog)

-MQ2 ay maaaring direktang konektado sa anumang analog pin (analog) <ginusto ang paggamit ng analog dahil bakit hindi kapag mayroon kaming isang MCU na may mga analog na pin kung saan maaari nating makuha ang eksaktong halaga sa halip na ayusin ang ilang palayok sa likod ng aparato upang makakuha ng TAAS o LOW out of it, dahil sa pagdikit sa aking disenyo na hindi maa-access pa rin. Suriin:

-PIR ay maaaring direktang konektado sa anumang pin (digital)

-LCD: maaaring hinimok ng 4 na mga pin, maaaring konektado sa anumang pin (digital) ay mangangailangan ng +2 RS / E (digital)

-Buzzer: maaaring direktang konektado sa anumang mga pin ng Arduino (digital)

Ang pinout na ginamit ko ay makikita sa code. Ang pagkonekta ng lahat nang magkasama pagkatapos nito ay medyo tuwid, maaari mo ring gawin ang mga ito isa-isa, siguraduhin na ang 1 sensor ay gumagana nang perpekto pagkatapos ay magpatuloy sa susunod, ang lahat na maaaring magkamali ka ay sa pamamagitan ng pagkakamali sa pagkonekta ng mga wire sa mga maling lugar (hal. Pagpapalit ng vcc / gnd para sa isang sensor, sa ngayon hindi ko pinatay ang alinman sa aking mga aparato). Ano ang mapapansin ko dito na maraming mga VCC at GND na nakasalansan para sa akin, hindi ko sila mapisil sa isang terminal strip kaya hinangad ko silang lahat.

Tungkol din sa mga DHT huwag kalimutan mula sa aking iba pang mga proyekto: kung inilagay mo ang library ng DHT sa iyong code at ang sensor ng DHT ay hindi konektado o maling koneksyon sa DHT (hal. 11 na tinukoy sa code na iyong ginagamit 22) na maaaring humantong sa programa upang mabitin magpakailanman sa simula.

Tungkol sa mga sensor ng pagtuklas ng paggalaw ng PIR, tulad ng nakikita mo sa aking larawan na may libu-libong mga huwad na mga ito, bagay na sa katunayan ay mahihirapan akong bumili ng isang tunay na mula sa Ebay. Gumagana rin ang mga pekeng, kahit sa pangmatagalan ngunit mayroon silang circuit na nakalarawan na nagsasanhi ng mga + at - pin na baligtad, madali din itong makilala mula sa: darating na may asul na pcb hindi ang karaniwang berde, nawawala ang mga label para sa ang mga potmeter. Mapalad ako na makahanap ng isang tunay sa aking kahon kung hindi man ang pagbabago ng posisyon ay sasaklaw sa 2 leds para sa akin. Nalaman ko na ang parehong mga kaldero ay naka-crank sa midway na gumagana para sa akin. Bibigyan ka nito ng sapat na sapat na saklaw para sa pag-sensing din kapag may paggalaw ang digital leg ay itatago sa MATATAAS na posisyon nang halos isang minuto, kaya hindi mo kailangang makabuo sa code para dito. Sa mga pekeng madaling matukoy kung aling panig ang - at + tingnan lamang ang mga kaukulang binti para sa mga electrolytic cap na konektado sa mga pin.

Para sa pagputol ng kahon gumamit ako ng brilyante na ulo ng dremel (na kung saan ay isang labis na labis ngunit mahusay na gumana) at regular na drilling machine. Ang mga kahon ng kantong ito ay madali upang gumana at kahit na hindi ko gusto ang pagdidikit wala akong mga tornilyo at bolts kapag itinatayo ito kaya kinuha ko ang bargain ng mga nakadikit na mga bagay (na maaaring madali ring pag-initin at paghiwalayin sa ibang pagkakataon sa pamamagitan ng paggamit ng parehong gluegun na walang laman dito).

Hakbang 2: Disenyo ng Software

Disenyo ng Software
Disenyo ng Software
Disenyo ng Software
Disenyo ng Software

Ang Arduino code ay simple din, karaniwang hinihila nito ang lahat ng mga pagbabasa ng sensor sa simula ng bawat loop. Buksan ang mga LED kung mayroong paggalaw o usok at nagpapatugtog din ng tunog ng alarma sa buzzer kung mayroong usok (ito lang ang nag-block na code kaya't ginawang maikli ko ito), pagkatapos ay ipinapakita ang data sa LCD at sa wakas ay ipinapadala ito sa PC na may isang 10 segundo na tagal ng paghawak, hindi upang baha ang port.

Gumagamit ang proyektong ito ng isang paraan ng komunikasyon mula sa Arduino-> OrangePI, walang mga utos ng anumang uri na ipinatupad. Kahit na ito ay magiging perpektong posible na gawin ito tulad ng ginawa ko ito sa isa sa aking iba pang proyekto kung saan ang computer ay maaaring magpadala ng LCD_PRINT1 o LCD_PRINT2 upang patungan ang isang linya ng LCD screen na may sariling mensahe (hal: ip address, uptime, petsa ng system, Paggamit ng CPU), ang lugar ng screen ay napakaliit para sa pagpapakita ng data mula sa 3 mga sensor na hindi ko rin ininda. Ang mga halaga ng SOL at SMK ay maaaring parehong umakyat sa 4 na digit 0000-1023 kumukuha na ng 8 mahalagang mga character sa screen.

Sa LCD maaari mong mapansin ang isang maliit na bilis ng kamay sa code na pagkatapos ng bawat sinusukat na halaga isang pag-print ng mga puting puwang ("") ang inilalapat, pagkatapos ay ilipat ko ang cursor sa mga nakapirming posisyon upang mailagay ang mga bagong icon at data. Narito ang mga ito dahil ang LCD ay hindi ganoon katalino upang maunawaan ang mga numero, kumukuha lamang ito ng kung ano ang nakukuha nito at halimbawa kung mayroon kang isang solar na halaga ng 525 na biglang nabawasan sa 3 pagkatapos ay ipapakita nito ang 325 na iniiwan ang lumang basura sa screen doon

Ang isang C control code na tumatakbo sa OrangePI at pag-log ng data sa kapaligiran at pagpapadala ng mga alerto sa email kung kinakailangan.

Ang OrangePI ay nagpapatakbo ng Armbian (na sa oras ng pagsulat batay sa Debian Stretch). Isasama ko ito sa bahagi ng software patungkol dito ay isang hw na problema kung ano ang nalutas nito. Narito ang average na power drain ng aparato:

0.17 A - Arduino lamang + mga sensor

0.5-0.62 A - Pag-boot sa OrangePI

0.31 A - Orange PI na walang ginagawa

0.29 A - Pinatay ang Orange PI (hindi talaga masarhan, wala itong ACPI o anumang katulad nito)

0.60 A - Stress test 100% CPU paggamit sa 4 na core

Mayroon akong OrangePI na ito sa isang kahon mula sa mahabang panahon. Sa pamamagitan ng lumang kernel ang aparato ay pinatuyo ng napakaraming kasalukuyang (tulad ng sinabi ng metro na umakyat sa paligid ng 0.63 A) kung ano ang maaaring hindi niya maibigay sa PSU na hindi lamang ito nag-boot, ang proseso ng boot ay natigil at nakuha ko ang 2 ethernet leds na ilaw patuloy at walang ginagawa.

Ngayon ito ay uri ng nakakainis dahil inaangkin ng HLK-5M05 na maaari nitong gawin ang 5W sa 5V na ginagawang makapagbigay ng 1 Amp ngunit sa mga aparatong ito na lumalabas sa Tsina hindi mo lang alam, ang 0.63 Isang rurok ay mas mababa kaysa sa na-rate na max halaga Kaya't pinapatakbo ko ang simpleng mga pagsubok sa pag-reboot, mula sa 10 pag-reboot ng OrangePI ay kukuha lamang ng dalawang beses matagumpay na na-boot, na halos ginawang itapon ako mula sa proyekto dahil hindi ko gusto ang maraming hindi gaanong pag-uugali ng mga buggy sa mga circuit. Kaya't nagsimula akong mag-googling sa paligid marahil ay may isang paraan upang babaan ang pagkonsumo ng kuryente sa oras ng pag-boot mula sa software (dahil isyu lamang ito noon) at nakita ko ang ilang artikulo na pinag-uusapan ang pag-tweak ng script. Ngunit ngunit para sa Orange PI PC at ang mga file ay nawawala mula sa imbakan kaya't anuman bilang huling paraan na nagawa ko ang mahiwagang "apt upgrade" upang mai-upgrade ang firmware, kernel at lahat ng iba pa, umaasa na mas kaunti ang maubos at ang aparato ay maaaring mag-boot at:

Linux silverlight 4.14.18-sunxi # 24 SMP Fri Peb 9 16:24:32 CET 2018 armv7l GNU / Linux

Linux silverlight 4.19.62-sunxi # 5.92 SMP Wed Hul 31 22:07:23 CEST 2019 armv7l GNU / Linux

Gumana ito! Ang pagtatapon ng hardware sa isang problema sa software ay karaniwang tamad na mga developer ng Java na maganap ngunit sa kasong ito ay nalutas namin ang isang problema sa hardware sa software kung ano ang isang malaking tagumpay. Nagawa ko na tulad ng 20 pang mga pagsubok sa pag-reboot na na-boot ng aparato ang bawat solong kaso. Mapapansin ko pa rin na ang lakas ng alon mula sa pag-on ng Opi (pagkonekta / pagdiskonekta) ay napakalaki na ire-reset nito ang Arduino anumang naibigay na oras (isang simpleng pag-reboot ay magpapitik lang sa LCD ngunit hindi magdudulot ng karagdagang mga isyu), ngunit nananatili ang isyung ito nakatago dahil ang 2 ay magkakasamang boot.

Tiningnan ko rin ang mga module ng kernel:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils ttm sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer snd sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple

Ano ba talaga ang kailangan natin sa mga ito? Ok ang pwr at thermal ay maaaring maging kapaki-pakinabang ngunit ang tunog, serial port, wifi (sirang hw na) hindi namin kailangan ang lahat ng ito ay maaaring ma-blacklist. Lilikha din ako ng isang pasadyang kernel na may mga kinakailangang module lamang sa paglaon.

Ang kailangan namin at hindi ito na-load bilang default ay ang CDC ACM upang makipag-usap sa Arduino, paganahin ito sa:

echo "cdc-acm" >> / etc / modules

Pagkatapos nito ay maaari mo nang subukan ang koneksyon sa:

screen / dev / ttyACM0 9600

Dapat mong makita ang data ng katayuan na ipinapadala sa bawat 10 segundo.

Mga alerto at pagsubaybay

Tulad ng mga alerto inilagay ko lang sa mga system () na tawag sa C control code na tumatanggap ng data mula sa serial kaya walang kinakailangang mga panlabas na tool. Ilang halimbawang halimbawa:

- Ang temperatura ay lumalagpas sa 30 C

- Humidity ay higit sa 70% (hindi malusog para sa mga server)

- Nakita ang paggalaw sa silid (maaari itong maging nakakainis kung patuloy kang pupunta sa iyong silid ng server)

- Nakita ang usok o gas (ang mga alerto na higit sa 100 ay maaaring seryosohin, nilalaro ko ang sensor na ito at lumiliko ito para sa maraming mga bagay, halimbawa ng paglikha ng usok sa tabi ng sensor na may soldering iron na nagresulta ng higit sa 50 habang ang paninigarilyo sa sigarilyo o ang spiked hanggang sa 500, nakakita pa ito ng gas mula sa regular na deodorant mula sa malayo)

Para sa pagpapanatili ng makasaysayang data hindi ako nag-abala sa pagbuo ng isang tool sapagkat kung bakit muling likhain ang gulong nang nakuha namin ang mahusay na mga balangkas ng pagsubaybay doon. Magpapakita ako ng isang halimbawa kung paano isama ito sa aking personal na paborito, Zabbix:

apt-get install zabbix-agent

Idagdag sa dulo ng: /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum, ulo -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 1}'

UserParameter = silverlight.tmp, ulo -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 2}' UserParameter = silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 4}' UserParameter = silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 5}' UserParameter = silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 6}'

Ang pagpapatakbo ng zabbix_agentd -p dapat ibalik ngayon ang mga tamang halaga:

silverlight.hum [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

Ang index ng init, kinokolekta ko ito ngunit hindi nakakakita ng praktikal na paggamit nito kaya naka-log lang ito. Sa C control code na ipinatupad ko ang 2 pag-andar sa pag-log, ang una ay mag-log ng lahat ng data sa format na madaling gamitin ng gumagamit:

[SILVERLIGHT] Natanggap ang data noong 2019-09-10 23:36:08 => Humidity: 44, Temp: 22, Hi: 25, Solar: 0, Motion: 0, Usok: 21

[SILVERLIGHT] Natanggap ang data sa 2019-09-10 23:36:18 => Humidity: 44, Temp: 22, Hi: 25, Solar: 0, Motion: 0, Usok: 21 [SILVERLIGHT] Natanggap ang data noong 2019-09 -10 23:36:29 => Humidity: 44, Temp: 22, Hi: 25, Solar: 0, Motion: 0, Usok: 22 [SILVERLIGHT] Natanggap ang data noong 2019-09-10 23:36:39 => Humidity: 44, Temp: 22, Hi: 25, Solar: 0, Paggalaw: 0, Usok: 21

Ang pangalawa:

void logger2 (char * text) {

FILE * f = fopen ("/ dev / shm / silverlight-zbx.log", "w"); kung (f == NULL) {printf ("Error sa pagbubukas ng file ng tala ng memorya! / n"); bumalik; } fprintf (f, "% s", teksto); fclose (f); bumalik; }

Maglalagay ito ng isang 1 liner log in memory (alisin ang hindi kinakailangang mga operasyon ng rw sa sdcard) na palaging susobrahan sa susunod. Maglalaman lamang ang log na ito ng 6 na mga haligi ng data at walang timestamp, madali itong mabasa para sa Zabbix.

Bilang isang pangwakas na bonus: kung paano i-program ang Arduino nang direkta mula sa OrangePI upang hindi mo na lumakad hanggang sa aparato tuwing at mai-plug ang iyong laptop.

Mayroong 2 mga paraan:

-Madaling paraan: I-install ang buong Arduino IDE at mga aklatan ay gumagamit ng ilang remote desktop tulad ng X11 na may pagpapasa, Xrdp, Xvnc, Nxserver atbp

-Hard way: I-install ang Arduino IDE at gamitin ang linya ng utos

Gagawin namin ang mahirap na paraan sa oras na ito dahil hindi ako mahilig mag-install ng X11 sa mga server. Para sa mga ito kakailanganin mo ng 6 na bahagi:

1, Arduino IDE para sa ARM 32 bit ->

2, Python serial -> apt-get install python-serial

3, proyekto ng Arduino Makefile -> git clone

4, DHT library

5, Mga kahulugan ng Sparkfun board

6, SilverLight.ino, pangunahing code

Upang gawing mas madali na na-bundle ko ang mga file na kinakailangan para sa huling 4 na puntos (sketchbook.tgz) kaya kakailanganin mo lamang ang unang 2

Una ito ang pinakamahusay na lumikha ng isang regular na gumagamit na mayroong access sa USB port:

adduser na pilak

usermod -a -G dialout silver

I-SCP ang sketchbook.tgz sa aparato sa direktoryo sa bahay ng bagong nilikha at kunin ito doon:

cd / bahay / pilak

tar xvzf sketchbook.tgz

Upang maunawaan nang kaunti kung ano ang mapupunta sa ilalim ng hood kapag gumagamit ka ng graphic na IDE:

Ang pagbuo ng daloy ng trabaho ng pagbuo ng isang Arduino sketch kapag ginagamit ang Arduino IDE ay inilarawan sa website ng Arduino https://www.arduino.cc/en/Hacking/BuildProcess at mas detalyado dito: https://www.arduino.cc/ tl / Pag-hack / BuildProcess

Pangkalahatan, ang karaniwang proseso ng pagbuo ng Arduino ay:

Pagsamahin ang.ino mga file sa pangunahing file ng sketch. Pagbabago ng pangunahing file ng sketch: idagdag ang pahayag na # isama; lumikha ng mga deklarasyong pagpapaandar (mga prototype) ng lahat ng mga pagpapaandar sa pangunahing file ng sketch; idagdag ang mga nilalaman ng main.cxx file ng target sa pangunahing file ng sketch. Compile ang code sa mga file ng object. I-link ang mga file ng object upang makabuo ng isang.hex file na handa na para sa pag-upload nito sa Arduino.

Mayroong ilang bahagyang pagkakaiba sa pagitan ng pamantayan ng proseso ng pagbuo ng Arduino at ang proseso ng pagbuo gamit ang Arduino-Makefile:

Isa lamang sa.ino file ang sinusuportahan. Ang mga pagpapaunlad ng pagpapaandar ay hindi awtomatikong nilikha sa.ino file. Kailangang mag-ingat ang gumagamit sa paglikha ng tamang mga deklarasyon ng pagpapaandar.

Ang puso ng proseso ng pagbuo ay ang Makefile. Huwag magalala, ang lahat ay handa para sa iyo, medyo mas kumplikado ito kapag nag-iipon ng ganitong paraan para sa mga hindi pamantayang board tulad ng seryeng SparkFun.

BOARD_TAG = promicro

ALVERATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT = / dev / ttyACM0 USER_LIB_PATH = / home / silver / sketchbook / libraries ARDUINO_DIR = /opt/arduino-1.8.9 isama /home/silver/sketchbook/file

At ang kailangan mo lang i-type ay isang: gumawa ng pag-upload (na magtatayo ng.hex file muna pagkatapos ay gumagamit ng avrdude upang mai-upload ang mga ito), magtatapos ito sa isang bagay tulad ng:

mkdir -p build-promicro-16MHzatmega32U4

make reset make [1]: Pagpasok sa direktoryo '/ home / silver / sketchbook' / home / silver / sketchbook / Arduino-Makefile / bin / ard-reset-arduino --caterina / dev / ttyACM0 make [1]: Aalis ng direktoryo ' / home / silver / sketchbook 'make do_upload make [1]: Direktoryo ng pagpasok' / home / silver / sketchbook '/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P / dev / ttyACM0 / -U flash: w: build-promicro-16MHzatmega32U4 / sketchbook. hex: i Kumokonekta sa programmer:. Natagpuan programmer: Id = "CATERIN"; uri = S Software Bersyon = 1.0; Walang ibinigay na Bersyon ng Hardware. Sinusuportahan ng Programmer ang pagtaas ng auto addr. Sinusuportahan ng Programmer ang buffered memory access na may buffersize = 128 bytes. Sinusuportahan ng Programmer ang mga sumusunod na aparato: Code ng aparato: 0x44 avrdude: AVR aparato na pinasimulan at handa na tanggapin ang mga tagubilin avrdude: Pirma ng aparato = 0x1e9587 (marahil m32u4) avrdude: pagbabasa ng input file na "build-promicro-16MHzatmega32U4 / sketchbook.hex" avrdude: pagsusulat ng flash (11580 bytes): avrdude: 11580 bytes ng flash nakasulat na avrdude: safemode: Fuse OK (E: CB, H: D8, L: FF) avrdude tapos na. Salamat.

Kaya salamat avrdude, at ngayon ang aming Arduino ay na-reset at na-program sa bagong code, kung ano ang maaari mo lamang i-edit sa vi o sa iyong paboritong editor nang lokal, hindi na kailangan para sa anumang mga IDE. Gusto kong tandaan na dapat mong isara ang parehong programa ng C control, screen o anumang bagay na pag-access sa arduino habang ina-upload, kung hindi man ay babalik ang port bilang / dev / ttyACM1 pagkatapos ng pag-reset.

Hakbang 3: Listahan ng Pagsara at Todo

Pagsasara at Listahan ng Todo
Pagsasara at Listahan ng Todo
Pagsasara at Listahan ng Todo
Pagsasara at Listahan ng Todo
Pagsasara at Listahan ng Todo
Pagsasara at Listahan ng Todo

Kahit na nilikha ko ang kahon ng sensor ng kapaligiran para sa mga silid ng server maaari mo itong magamit para sa kimika / elektronikong mga lab, warehouse, regular na silid at anupaman. At oo dahil gumagamit ito ng TCP / IP ito ay isang aparato ng IoT, G Dapat ko ring ilagay iyon sa pamagat din upang gawin itong mas nakakaisip:)

Madali mong mababago ang parehong hardware at software upang ma-on din ang mga ilaw sa silid nang awtomatiko. Tingnan ang aking iba pang proyekto: Shadow of phoenix paano gumagana iyon para sa light control, nasa iyo ang lahat ng hardware upang gawin ang parehong bagay (gumagamit ito ng mga hold timer upang mapanatili ang mga ilaw hangga't may nakita na paggalaw sa loob ng isang tagal ng panahon, kung may paggalaw muli ang isang timer ay ma-bumped).

Gamit ang OrangePI na nagpapatakbo ng isang buong stack Armbian ang mga posibilidad ay walang limitasyong, maaari kang lumikha ng isang lokal na web interface na nakasulat mula sa simula sa php upang ipakita ang makasaysayang data sa mga graph. Hindi ba't mas mahusay na ito na mayroon kang isang kumpletong aparato ng Open Source na sinusubaybayan ang iyong silid ng server kung ano ang maipagmamalaki mong buuin, kung sa palagay mo ay itatayo mo ito mismo!

Inirerekumendang: