Satura rādītājs:
- 1. darbība: instrumenti un materiāli
- 2. darbība. Eksperimenta izveide
- 3. darbība. Eksperimenta veikšana
- 4. darbība. Eksperiments: parauga ātrums
- 5. darbība: eksperiments: tiek parādīts troksnis
- 6. darbība: eksperiments: samaziniet troksni ar mainīgo vidējo
- 7. darbība. Eksperiments: vidējais mainīgais un izlases ātrums
- 8. darbība. Eksperiments: reģistrēšana ar aktivizētāju
- 9. solis: eksperiments: reģistrēšana ar trigeri - skaļāks troksnis
- 10. solis: veiciet savus eksperimentus
- 11. darbība: reģistrēšanas programmatūras metožu izmantošana
Video: Eksperimenti uzlabotā datu reģistrēšanā (izmantojot Python): 11 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Ir daudz norādījumu par datu reģistrēšanu, tāpēc, kad vēlējos izveidot savu mežizstrādes projektu, es paskatījos apkārt. Daži bija labi, daži ne tik daudz, tāpēc es nolēmu ņemt dažas labākas idejas un izveidot savu pieteikumu. Tā rezultātā projekts bija gan progresīvāks, gan sarežģītāks, nekā es sākotnēji gaidīju. Viena tā daļa kļuva par eksperimentu sēriju sensoru datu apstrādē. Šī pamācība ļauj izmēģināt tos pašus vai līdzīgus eksperimentus.
(Jūs varat apskatīt visu kodu un lejupielādēt to vietnē: Kods vietnē GitHub Jūs varat nokļūt skatīšanā, iespējams, citā logā tikai ar 2 klikšķiem)
Parasti datu reģistrēšana ietver šādas darbības:
- Datu iegūšana: nolasiet dažus datus no sensora. Bieži vien tas ir tikai analogā ciparu pārveidotāja (ADC) lasīšana ierīcē, piemēram, Arduino.
- Datu apstrāde: nolasot ADC vērtību, pārveidotāju izeja parasti ir jāmēro līdz pareizajām vienībām. Var būt nepieciešams veikt arī dažus pielāgojumus, lai kalibrētu vērtības, lai novērstu sensoru kļūdas.
- Filtrēšana: dati parasti satur troksni, to var filtrēt, lai jūs meklētu signālu savos datos, nevis troksni.
- Datu glabāšana: dati tiek saglabāti, iespējams, teksta failā, iespējams, mākonī. Datiem vajadzētu izdzīvot pat tad, ja strāva tiek izslēgta. Ir viegli saglabāt pārāk daudz datu, mums ir neliels triks, lai samazinātu datu glabāšanas vietu.
- Datu attēlojums: metodes, kā apskatīt savus datus, nevis īsti datu reģistrēšana, bet, ja jūs neveicat sava veida datu attēlošanu, kāpēc tos apkopot?
- Attālā piekļuve: nav nepieciešama, bet jauki.
Lielākajā daļā norādījumu ir daži, bet ne visi iepriekš minētie, vai arī tie tiek darīti ļoti vienkāršā veidā. Šī pamācība novērsīs 2 bieži izlaistās reģistrēšanas problēmas un kā bonuss dos jums iespēju attēlot savus datus, neizmantojot mākoņa pakalpojumu. Jūs varat izmantot visu lietu vai izvilkt gabalus un pārtaisīt tos savā projektā.
1. darbība: instrumenti un materiāli
Šis piemērs ir pieejams Python, tāpēc tas darbosies un komponentus var izmantot gandrīz jebkurā OS, ieskaitot Mac, PC, Linux un Raspberry Pi.
Tātad, lai izmantotu šo pamācību, viss, kas jums nepieciešams, ir darbojas Python 3.6 vide un lejupielādējiet pievienoto kodu. Pēc mana iestatītā koda palaišanas varat to mainīt saviem eksperimentiem. Kā parasti Python, jums, iespējams, būs jāpievieno dažas paketes/moduļi, lai viss darbotos. Manā Spyder vidē ir gandrīz visas nepieciešamās detaļas (sk. Instalējamo skatu grafiks ar Python ekrāna skrāpēšanu). Pirmoreiz palaižot skatieties, vai nav kļūdu ziņojumu, tie informēs jūs par trūkstošajām jūsu vides daļām.
Nākamās divas darbības jums pateiks, kā izveidot un izpildīt savu eksperimentu, taču, iespējams, labāk ir pagaidīt, līdz tiek palaisti iekļautie eksperimenti, pirms izmēģināt savu.
Lai saprastu kodu, jums ir jābūt nelielai pieredzei ar objektorientētu Python, paskaidrojot, ka tas nav šīs instrukcijas darbības jomā, taču uzņēmumam Google ir jāsniedz jums palīdzība.
Ievērojiet kodu: (Kods vietnē GitHub Jūs varat iekļūt skatīšanā, iespējams, citā logā, veicot tikai 2 klikšķus), tagad ir Python 3.6, tāpēc vislabāk būtu izmantot 3.6. Vecāka koda versija ir šeit zemāk esošajās saitēs.
2. darbība. Eksperimenta izveide
Eksperimenta veidošanai ir trīs programmēšanas soļi (un līnijas). Katrs eksperiments ir funkcija loggingSim objektā failā simulate_logging.py. Apskatīsim 1. eksperimentu (tikai pirmo grafiku), ko mēs veiksim nākamajā darbībā:
def eksperiments_ar_sample_rates (sevi):
print "" "Eksperiments ar parauga likmēm Skatoties uz dažādiem paraugu rādītājiem, mainot delta T" "" self.start_plot (plot_title = "Sample Rates - 1/3: Delta T = 1,0") self.add_sensor_data (name = "dt = 1. ", amplitūda = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
Katrs eksperiments ir rakstīts kā sava funkcija, tāpēc mums ir līnija, kas definē funkciju (def eksperiments …..)
Nākamā rindiņa bez komentāriem (start_plot (…)) izveido eksperimenta objektu un piešķir tam nosaukumu.
Nākamā rindiņa bez komentāriem (add_sensor_data (…) ir sadalīta vairākās rindās. Tā simulē sensoru, kas mēra signālu ar potenciālu troksni un zināmu apstrādi. Funkcijas argumenti ir šādi:
- nosaukums: vārds, kas uzrakstīts pēdējā grafikā, lai identificētu datus
- amplitūda: cik liels ir signāls, šajā pamācībā mēs vienmēr izmantosim amplitūdu 1.
- noise_amp: cik liels ir troksnis, 0. nav trokšņa, mēs sāksim šeit.
- delta_t: laiks starp mērījumiem, kontrolē izlases ātrumu.
- max_t: maksimālais datu vākšanas laiks, mēs šajā instrukcijā vienmēr izmantosim 10.
- run_ave: apstrāde, izmantojot vidējo rādītāju, 0 nozīmē, ka apstrādes nav.
- trigger_value: apstrāde, izmantojot aktivizēšanu, 0 nozīmē, ka apstrādes nav
pēdējā rindā bez komentāriem (self.show_plot ……) tiek parādīta diagramma.
Lai lietas padarītu nedaudz sarežģītākas, grafikā var būt vairākas rindas vai vairāki grafiki, tam vajadzētu būt skaidram no turpmākajiem eksperimentiem.
3. darbība. Eksperimenta veikšana
Šis ir kods eksperimenta veikšanai. Tāpat kā Python, tas tiek ievietots faila beigās.
sim_logging = LoggingSim ()
sim_logging.experiment_with_sample_rates ()
Šīs ir tikai 2 rindas:
- Reģistrācijas simulatora izveide (LoggingSim ())
- Palaidiet to (sim_logging.experiment_with_sample_rates ())
Lejupielādētajā kodā man ir vēl dažas rindiņas un komentāri, to vajadzētu viegli saprast.
4. darbība. Eksperiments: parauga ātrums
Šeit izveidotais simulators vienmēr izvada jauku vienmērīgu sinusoidālo viļņu amplitūdu 1. Šim eksperimentam mēs sajauksimies ar izlases ātrumu, ko koriģē delta_t, laika starpību starp paraugiem. Mums nebūs trokšņa vai citas apstrādes. Kodā tiek izmantoti 3 izlases ātrumi (delta_t = 1,0, 0,1 un 0,01.) Tā kā grafiki krīt viens virs otra, eksperiments ir iestatīts, lai iegūtu 3 dažādus grafikus. Iegūtie grafiki ir šīs darbības attēli.
def eksperiments_ar_sample_rates (sevi):
print "" "Eksperiments ar parauga likmēm Skatoties uz dažādiem paraugu rādītājiem, mainot delta T" "" self.start_plot (plot_title = "Eksperimenta parauga likmes 1/3: Delta T = 1,0") self.add_sensor_data (name = "dt = 1. ", amplitūda = 1., noise_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------- ----------------------------------- self.start_plot (plot_title = "Eksperimenta paraugu likmes 2/3: Delta T = 0,1 ") self.add_sensor_data (name =" dt = 1. ", amplitūda = 1., noise_amp =.0, delta_t = 0.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------------------------------------------ pats.start_plot (plot_title = "Eksperimenta paraugu likmes 3/3: Delta T = 0,01") self.add_sensor_data (name = "dt = 1.", amplitūda = 1., noise_amp =.0, delta_t = 0.01, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
Lai to palaistu, izmantojiet rindu: sim_logging.experiment_with_sample_rates ()
Iespējamie secinājumi:
- Pārāk zems paraugu ņemšanas līmenis ir patiešām slikts.
- Augstas likmes bieži vien ir labākas.
(Python 3.6 kods GitHub saitē zem instrukcijām, 2.7)
5. darbība: eksperiments: tiek parādīts troksnis
Šajā eksperimentā mēs saglabājam vienu un to pašu signālu, izmantojam vidēju izlases ātrumu un ir atšķirīgs trokšņa daudzums (noise_amp =.0,.1, 1.0.) Palaidiet to ar: sim_logging.experiment_showing_noise (). Rezultāts ir viens grafiks ar 3 rindām.
Iespējamais secinājums:
Trokšņa dēļ ir grūti redzēt signālu, ja iespējams, samaziniet to
Kods:
# ------------------------------------------------
def experiment_showing_noise (self): print "" "Eksperiments, kas parāda troksni Skatoties uz dažādiem trokšņa apjomiem, mainot trokšņa amplitūdu." "" self.start_plot (plot_title = "Experiment Showing Noise") self.add_sensor_data (name = "noise = 0.0" ", amplitūda = 1., noise_amp =.0, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name =" noise = 0.1 ", amplitude = 1., noise_amp =. 1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name = "noise = 1.0", amplitude = 1., noise_amp = 1., delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()
6. darbība: eksperiments: samaziniet troksni ar mainīgo vidējo
Slīdošais vidējais rādītājs (piemēram, ar garumu 8) veic pēdējos 8 mērījumus un tos vidēji aprēķina. Ja troksnis ir nejaušs, mēs ceram, ka tā vidējais līmenis būs tuvu 0. Palaidiet eksperimentu ar: sim_logging.experiment_showing_noise (). Izvadiet vienu grafiku.
Iespējamie secinājumi:
- Slīdošais vidējais lielums novērš lielu troksni
- Jo ilgāk slīdošais vidējais, jo vairāk trokšņu samazinās
- Ilgāks slīdošais vidējais var samazināt un izkropļot signālu
Kods:
# ------------------------------------------------
def experiment_with_moving_average (self): print "" "Eksperiments ar MovingAverage Apskatot dažādus MovingAverage, mainot garumu. Visiem ir vienāds troksnis." "" # ------------------ ------------------------------ self.start_plot (plot_title = "MovingAverage-Part 1/2: No Moving Average") self.add_sensor_data (name = "ave len = 0", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () self.start_plot (plot_title) = "MovingAverage-2/2. Daļa: Len 8 un 32") self.add_sensor_data (nosaukums = "ave len = 8", amplitūda = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 8, trigger_value = 0) self.add_sensor_data (name = "ave len = 32", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 32, trigger_value = 0) self.show_plot ()
7. darbība. Eksperiments: vidējais mainīgais un izlases ātrums
Šajā eksperimentā mēs salīdzinām neapstrādāto signālu ar troksni un 2 dažādām trokšņa samazināšanas variācijām.
- Vidējs izlases ātrums un vidējais darbības rādītājs
- Augsts izlases ātrums un augsts vidējais darbības ilgums
Palaidiet to ar: sim_logging ……. Rezultāts ir viens grafiks. Es domāju, ka ir skaidrs, ka 2. numurs veic labāku darbu trokšņa samazināšanā, tāpēc mēs varētu secināt, ka:
Augsts paraugu ņemšanas ātrums un vidējais darbības ilgums ir labs
Bet jums jāpatur prātā, ka ir izmaksas. #2 prasa daudz vairāk apstrādes, un tā rezultātā tiek saglabāti daudz vairāk datu. Izmaksas var būt vai nav tā vērtas. Nākamajā eksperimentā mēs pievienosim sprūdu - ierīci, lai samazinātu saglabāto datu apjomu.
Kods:
def eksperiments_ar kustīgu_ vidējo_un_parauga_vērtību (sevi):
izdrukāt "" "Eksperimentējiet ar mainīgo vidējo un parauga ātrumu, dt, vidējais rādītājs mainās" "" # ---------------------------- -------------------- self.start_plot (plot_title = "Moving Average and Sample Rate") self.add_sensor_data (name = "dt =.1 ra = 0 trig = 0 ", amplitūda = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name =" dt =.1 ra = 10 trig = 0 ", amplitūda = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (nosaukums = "dt =.01 ra = 100 trig = 0", amplitūda = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value = 0) self.show_plot ()
8. darbība. Eksperiments: reģistrēšana ar aktivizētāju
Šajā eksperimentā mēs pievienojam sprūdu. Pirmkārt, ko es domāju ar sprūdu? Aktivizētājs ir metode, kurā mēs apkopojam datus, bet saglabājam tos tikai pēc tam, kad kāds mainīgais ir ievērojami mainījies. Šajos eksperimentos es uzlieku laika (x ass) mainīgā sprūdu. Izmantojot sprūdu, es varu paņemt lielu datu daudzumu no ātras izlases un samazināt to līdz saprātīgākam datu apjomam. Tas ir īpaši noderīgi ar augstu izlases ātrumu un ilgu darbības vidējo rādītāju.
Esmu izvēlējies #2 līniju no pēdējā eksperimenta, kas bija "labs", un pievienoja sprūdu. Palaidiet to ar: sim_logging ……. Rezultāts ir viens grafiks, x līnijas.
Kas notiek? Mēs iegūstam "labu" diagrammu ar saprātīgu datu daudzumu (tāds pats kā #1). Augstāka apstrāde ir radījusi zināmas izmaksas. Tomēr kopumā rezultāti ir aptuveni tādi paši kā zemāks paraugu ņemšanas ātrums ar mazāku filtrēšanu. Jūs varētu secināt:
- Ilgstošs vidējais rādītājs ar aktivizēšanu var nodrošināt labu trokšņa samazināšanu ar saprātīgu datu apjomu.
- Papildu apstrāde var nedot tik daudz labākus rezultātus un ir saistīta ar izmaksām.
Kods:
# ------------------------------------------------
def experiment_with_trigger (self): print "" "Eksperimentējiet ar aktivizēšanu, dt, palaidiet vidēji un aktivizējiet, lai viss tiktu mainīts" "" # ----------------------- ------------------------- self.start_plot (plot_title = "Trigger 1/1-Triggering On") self.add_sensor_data (nosaukums = "dt =.1 ra = 10, trig = 0 ", amplitūda = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name =" dt =.01 " ra = 100, trig =.1 ", amplitūda = 1., noise_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()
=
9. solis: eksperiments: reģistrēšana ar trigeri - skaļāks troksnis
Veiksim to pašu eksperimentu kā pēdējo soli un pastiprināsim troksni. Palaidiet to ar: sim_logging ……. Rezultāts ir viens grafiks, 2 rindas.
Tagad papildu apstrāde izskatās vērtīgāka. Šeit varētu būt saprātīgs secinājums:
Apstrādes apjoma un veida izvēle trokšņa samazināšanai ir atkarīga no jūsu signāla un trokšņa
Kods:
def eksperiments_ar_trigger_louder_noise (pats):
print "" "Skaļāks troksnis nekā iepriekšējais eksperiments" "" self.start_plot (plot_title = "An Experiment with Trigger-Louder Noise") self.add_sensor_data (name = "… dt =.1 ra = 10", amplitude = 1., noise_amp =.5, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (nosaukums = "..dt =.01 ra = 100 tv =.1", amplitūda = 1., noise_amp =.5, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()
10. solis: veiciet savus eksperimentus
Šajā brīdī es ceru, ka redzat, ka šīs pamācības metodes var būt noderīgas datu reģistrēšanā, taču tās arī ir jāizmanto, pārdomājot. Eksperimentēšana ar viņiem var palīdzēt šajā procesā.
Dažas piezīmes par eksperimentiem un lietām, kuras jūs varētu izpētīt:
- Sinusviļņi nav vienīgais interesants signāla veids, izmēģiniet citus, citus viļņus vai rampas vai…..
- Es izmantoju normālu trokšņa sadalījumu, ir tik daudz trokšņu veidu; jums vajadzētu apsvērt citus
- Vidējie rādītāji ir vienkārša, bet ne vienīgā metode, kā aplūkot troksni
Piezīme: attēlu reģistrēšana no Wikipedia.
11. darbība: reģistrēšanas programmatūras metožu izmantošana
Mans kods ir orientēts uz objektu, un vidējo un sprūda apstrādi var vienkārši nokopēt jūsu Python vidē un pēc tam izmantot. Objekti ir:
- DataTrigger vietnē data_trigger.py
- MovingAverage vietnē move_average.py
Manam galvenajam objektam LoggingSim vietnē simulate_logging.py ir jāsniedz labs piemērs, kā to izmantot. Ja izmantojat citu valodu, varat izlasīt manu kodu un ieviest to savā valodā.
Šis kods var uzlabot jūsu projekta datu reģistrēšanu, izmēģiniet to.
Iepriekš redzamais grafiks ir no russ_hensel, kas izmanto to pašu vidējo vidējo objektu.
Ieteicams:
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti - DHT11 datu reģistrētāja simulācija Proteus: 5 soļi
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti | DHT11 datu reģistrētāja simulācija Proteus: Ievads: čau, tas ir Liono Maker, šeit ir YouTube saite. Mēs veidojam radošu projektu ar Arduino un strādājam pie iegultām sistēmām. Datu reģistrētājs: Datu reģistrētājs (arī datu reģistrētājs vai datu ierakstītājs) ir elektroniska ierīce, kas laika gaitā reģistrē datus
Vienkārša mobilo datu reģistrēšana, izmantojot PfodApp, Android un Arduino: 5 soļi
Vienkārša mobilo datu reģistrēšana, izmantojot PfodApp, Android un Arduino: Moblie datu reģistrēšana ir vienkārša, izmantojot pfodApp, jūsu Andriod mobilo tālruni un Arduino. NAV nepieciešama Android programmēšana. Lai attēlotu datus savā Android ierīcē, skatiet šo vēlāk ievadāmo vienkāršo attālo datu attēlošanu, izmantojot Android / Arduino / pfodApp Zīmēšanai
Augstas precizitātes attālā datu reģistrēšana, izmantojot multimetru/Arduino/pfodApp: 10 soļi (ar attēliem)
Augstas precizitātes attālā datu reģistrēšana, izmantojot multimetru/Arduino/pfod Lietotne: Atjaunināts 2017. gada 26. aprīlī Pārskatīta shēma un tāfele lietošanai kopā ar 4000ZC USB skaitītājiem. Nav nepieciešama Android kodēšana Šī instrukcija parāda, kā piekļūt plašam augstas precizitātes mērījumu klāstam no sava Arduino un arī nosūtīt tos attālināti mežizstrādei un
UCL -IIOT - datu reģistrēšana Raspberry Pi: 6 soļi
UCL -IIOT - datu reģistrēšana Raspberry Pi: šo pamācību skolas projektam izveidoja Obayda Haj Hamoud un Sidse Henriksen. Galvenā ideja ir vākt datus no gaismu sensora, reģistrēt datus datu bāzē bezvadu režīmā aveņu pi un uzraudzīt šos datus, izmantojot informācijas paneli
Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: 7 soļi (ar attēliem)
Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: Man ir interese izmantot Arduino mašīnmācībai. Vispirms es vēlos izveidot reāllaika (vai diezgan tuvu tam) datu displeju un reģistrētāju ar Android ierīci. Es vēlos tvert akselerometra datus no MPU-6050, tāpēc es izstrādāju