ఆర్డునోతో మోషన్ డిటెక్షన్ సిస్టమ్‌ను ఎలా నిర్మించాలి: 7 స్టెప్స్

Part 8 - Building an £850 hatchback into a competitive race car.

Part 8 - Building an £850 hatchback into a competitive race car.

విషయ సూచిక:

Anonim

ఆర్డునోతో ప్రోగ్రామ్ చేయబడిన మరియు ఉబిడాట్స్ చేత శక్తినిచ్చే ఫెదర్ హుజ్జాహ్ ఉపయోగించి చలన మరియు ఉనికి ఉత్పత్తి కౌంటర్‌ను రూపొందించండి.

స్మార్ట్ హోమ్స్ మరియు స్మార్ట్ మాన్యుఫ్యాక్చరింగ్‌లో ప్రభావవంతమైన భౌతిక కదలిక మరియు ఉనికిని గుర్తించడం వృద్ధుల యాంబియంట్ అసిస్టెడ్ లివింగ్ (AAL) సొల్యూషన్స్ లేదా పెద్ద MES ను పోషించే ప్రొడక్షన్ కౌంటింగ్ సిస్టమ్ నుండి అనువర్తనాల్లో చాలా ఉపయోగకరంగా ఉంటుంది. మోషన్ మరియు ప్రెజెన్స్ డిటెక్షన్ కోసం ఇతర అనువర్తనాలు వీటిలో ఉన్నాయి కానీ వీటికి పరిమితం కాలేదు:

  1. డోర్ మరియు గేట్ ఆటోమేషన్
  2. ఉచిత మచ్చలను గుర్తించడానికి పార్కింగ్ సెన్సార్లు
  3. రిమోట్ ట్యాంక్ స్థాయి పర్యవేక్షణ
  4. స్మార్ట్ హోమ్స్ మరియు లైటింగ్ మరియు భద్రత కోసం సౌకర్యాలు
  5. కన్వేయర్ లైన్లలో యూనిట్లు గుర్తించడం మరియు లెక్కించడం
  6. ముద్రిత పదార్థాలపై గుర్తింపును గుర్తించండి
  7. కార్డ్బోర్డ్, ప్లాస్టిక్ మరియు పేపర్ టిల్ట్స్ లోపల ద్రవ గుర్తింపు
  8. దూర గుర్తింపు
  9. ప్రజలు కౌంటర్లు

ఉనికి మరియు కదలిక కోసం చాలా అనువర్తనాలు ఉన్నప్పటికీ, కెపాసిటివ్, ప్రేరక, ఫోటోఎలెక్ట్రిక్ మరియు అల్ట్రాసోనిక్ సెన్సార్లు వంటి డేటాను సేకరించడానికి సమానంగా అనేక సెన్సార్లు ఉన్నాయి. ఖర్చులు, పర్యావరణ పరిస్థితులు మరియు ఖచ్చితత్వ అవసరాలను బట్టి, పర్యావరణం మరియు అనువర్తన అవసరాలకు ఉత్తమమైన హార్డ్‌వేర్‌ను ఎంచుకోవాలి.

ఈ ట్యుటోరియల్ కోసం, మేము రియల్ టైమ్ ప్రొడక్షన్ కౌంటర్ను నిర్మించడంపై దృష్టి పెడతాము; అప్లికేషన్ కన్వేయర్ బెల్ట్ మీద ప్రయాణిస్తున్న ప్రతి యూనిట్ను లెక్కిస్తుంది. మా అప్లికేషన్‌ను అభివృద్ధి చేయడానికి మరియు మా IoT డాష్‌బోర్డ్‌ను ప్రదర్శించడానికి ఫెదర్ HUZZAH ESP8266, అల్ట్రాసోనిక్ సెన్సార్ మరియు ఉబిడాట్‌లను ప్రోగ్రామ్ చేయడానికి మేము Arduino IDE ని ఉపయోగిస్తాము.

సామాగ్రి:

దశ 1: అవసరాలు

  1. ESP8266MB7389-100 తో ఈక HUZZAH
  2. అల్ట్రాసోనిక్ సెన్సార్
  3. Arduino IDE 1.8.2 లేదా అంతకంటే ఎక్కువ
  4. ఉబిడోట్స్ ఖాతా-లేదా- విద్యా లైసెన్స్

దశ 2: సెటప్

  • నేను హార్డ్వేర్ సెటప్
  • II. ఫర్మ్వేర్ సెటప్
  • III. ఉబిడోట్స్ అప్లికేషన్ డెవలప్‌మెంట్ (ఈవెంట్‌లు, వేరియబుల్స్ మరియు డాష్‌బోర్డ్‌లు)

దశ 3: హార్డ్వేర్ సెటప్

అల్ట్రాసోనిక్ సెన్సార్ MB7389-100 అనేది పారిశ్రామిక అనువర్తనాల కోసం తక్కువ-ధర ఎంపిక, దాని IPv67 రేటింగ్‌కు కృతజ్ఞతలు తెలుపుతూ వాతావరణ పరిస్థితులను సవాలు చేయడంలో విస్తృత-శ్రేణి మరియు తక్కువ-శక్తి వినియోగ అవసరాలు ఉన్నాయి.

ప్రారంభించడానికి, అల్ట్రాసోనిక్ సెన్సార్‌ను అటాచ్ చేయడానికి క్రింది రేఖాచిత్రాన్ని ప్రతిబింబిస్తుంది ఈక HUZZAH ESP8266.

గమనిక: సెన్సార్ పఠనం అనలాగ్ రీడింగులు లేదా PWM గా తీసుకోవచ్చు; క్రింద మేము PWM పఠనం కోసం సెటప్ గురించి వివరించబోతున్నాము, అదనపు సమాచారం కోసం దయచేసి పైన చూపిన ఉదాహరణలు చూడండి.

ఐచ్ఛికంగా ధూళి, నీరు మరియు ఇతర బెదిరింపు పర్యావరణ కారకాల నుండి రక్షించడానికి మైక్రో-కంట్రోలర్ మరియు సెన్సార్లను డి IP67 కేసు లోపల ఉంచండి. ప్రామాణిక కేసు పై ఫోటోలలో చూపిన మాదిరిగానే కనిపిస్తుంది.

దశ 4: ఫర్మ్‌వేర్ సెటప్

మొదట, మీరు ఆర్డునో IDE లో ఫెదర్ హుజ్జాను ఇన్‌స్టాల్ చేసి కోడ్‌ను కంపైల్ చేయాలి. సరళమైన మెరిసే పరీక్ష చేయడం ద్వారా ఈ సెటప్‌ను ధృవీకరించాలని గుర్తుంచుకోండి. మీ ఫెదర్ పరికరాన్ని కనెక్ట్ చేయడం గురించి మరింత సమాచారం కోసం ఈ ఉపయోగకరమైన హార్డ్‌వేర్ సెటప్ గైడ్‌ను చూడండి.

సెన్సార్ డేటాను ఉబిడాట్స్ ఐయోటి డెవలప్‌మెంట్ ప్లాట్‌ఫామ్‌కు పంపడానికి, దిగువ కోడ్‌ను ఆర్డునో ఐడిఇలో కాపీ చేసి పేస్ట్ చేయండి. కోడ్‌లో సూచించిన చోట Wi-Fi నెట్‌వర్క్ పేరు, పాస్‌వర్డ్ మరియు మీ ఉబిడాట్స్ ఖాతా టోకెన్‌ను కేటాయించడం గుర్తుంచుకోండి.

/ ******************************** లైబ్రరీలు ఉన్నాయి *************** **************** / # ఉన్నాయి / ******************************** స్థిరాంకాలు మరియు వస్తువులు ************** ***************** // * ఉబిడోట్స్ * / const char * SSID_NAME = "xxxxxxxx"; // మీ SSID నేమ్‌కాన్స్ట్ చార్ * SSID_PASS = "xxxxxxxx" ఇక్కడ ఉంచండి; // మీ పాస్‌వర్డ్ కాన్ చార్‌ను ఇక్కడ ఉంచండి * TOKEN = "Assig_your_ubidots_token"; // మీ TOKENconst చార్ * DEVICE_LABEL = "మోషన్-కంట్రోల్" ఇక్కడ ఉంచండి; // మీ పరికరం లేబుల్కాన్స్ట్ చార్ * VARIABLE_LABEL = "దూరం"; // మీ వేరియబుల్ లేబుల్ కాన్స్ట్ చార్ * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "Industrial.api.ubidots.com"; // ఉబిడాట్స్ వ్యాపార వినియోగదారులు // const char * HTTPSERVER = " things.ubidots.com "; // ఉబిడోట్స్ ఎడ్యుకేషనల్ యూజర్‌ఇంట్ HTTPPORT = 80; / * అల్ట్రాసోనిక్ సెన్సార్ * / const int pwPin1 = 5; // సెన్సార్ కనెక్ట్ చేయబడిన PWM పిన్ WiFiClient clientUbi; / ******************************** సహాయక విధులు *** **************************** // ** శరీరం యొక్క పొడవును పొందుతుంది @arg వేరియబుల్ బాడీ ఆఫ్ టైప్ చార్ @ రిటర్న్ డేటా వేరియబుల్ యొక్క పొడవు * / int డేటా లెన్ (చార్ * వేరియబుల్) {uint8_t dataLen = 0; (int i = 0; i <= 250; i ++) {if (వేరియబుల్ i! = ' 0') {dataLen ++; } else {విరామం; data} రిటర్న్ డేటా లెన్;} / ******************************** ప్రధాన విధులు ********* ********************** / శూన్య సెటప్ () {సీరియల్.బిగిన్ (115200); / * AP కి కనెక్ట్ అవుతుంది * / WiFi.begin (SSID_NAME, SSID_PASS); అయితే (WiFi.status ()! = WL_CONNECTED) {ఆలస్యం (500); Serial.print ( "."); } పిన్‌మోడ్ (pwPin1, INPUT); WiFi.setAutoReconnect (నిజమైన); సీరియల్.ప్రింట్ల్న్ (ఎఫ్ ("వైఫై కనెక్ట్")); Serial.println (F ("IP చిరునామా:")); Serial.println (WiFi.localIP ());} void loop () {/ * సెన్సార్ పఠనం మిల్లీమీటర్లలో తిరిగి వస్తుంది, మీరు మార్చాలనుకుంటే * దాన్ని అంగుళాలుగా మార్చండి -> దూరం / 25.4 * / ఫ్లోట్ దూరం = పల్స్ఇన్ (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, దూరం); ఆలస్యం (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sens_value) {char * body = (char *) malloc (sizeof (char) * 150); చార్ * డేటా = (చార్ *) మాలోక్ (సైజు (చార్) * 300); / * పంపడానికి విలువలను నిల్వ చేయడానికి స్థలం * / చార్ str_val 10; / * ---- సెన్సార్ల విలువలను చార్ రకానికి మారుస్తుంది ----- * / / * 4 మినినం వెడల్పు, 2 ఖచ్చితత్వం; ఫ్లోట్ విలువ str_val * / dtostrf (సెన్సార్_వాల్యూ, 4, 2, str_val) పైకి కాపీ చేయబడింది; / * అభ్యర్థనలోకి పంపవలసిన శరీరాన్ని నిర్మిస్తుంది * / sprintf (శరీరం, "{"% s ":% s}", వేరియబుల్_లేబుల్, str_val); / * HTTP అభ్యర్థనను POST * / sprintf (డేటా, "POST /api/v1.6/devices/%s", device_label) గా రూపొందిస్తుంది; sprintf (డేటా, "% s HTTP / 1.1 r n", డేటా); sprintf (డేటా, "% sHost: things.ubidots.com r n", డేటా); sprintf (డేటా, "% sUser-Agent:% s /% s r n", డేటా, USER_AGENT, VERSION); sprintf (డేటా, "% sX-Auth-Token:% s r n", డేటా, టోకెన్); sprintf (డేటా, "% s కనెక్షన్: క్లోజ్ r n", డేటా); sprintf (డేటా, "% sContent-Type: application / json r n", డేటా); sprintf (డేటా, "% sContent-Length:% d r n r n", డేటా, డేటా లెన్ (బాడీ)); sprintf (డేటా, "% s% s r n r n", డేటా, శరీరం); / * ప్రారంభ కనెక్షన్ * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * క్లయింట్ కనెక్షన్‌ను ధృవీకరించండి * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("మీ వేరియబుల్స్‌ను పోస్ట్ చేస్తోంది:")); Serial.println (డేటా); / * HTTP అభ్యర్థనను పంపండి * / clientUbi.print (డేటా); } / * క్లయింట్ అందుబాటులో ఉన్నప్పుడు సర్వర్ యొక్క ప్రతిస్పందనను చదవండి * / అయితే (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (సి); } / * ఉచిత మెమరీ * / ఉచిత (డేటా); ఉచిత (సంస్థ); / * క్లయింట్‌ను ఆపు * / clientUbi.stop ();}

ProTip: Arduino IDE లో సీరియల్ మానిటర్ తెరవడం ద్వారా మీ పరికరం సరిగ్గా కనెక్ట్ అయిందో లేదో మీరు తనిఖీ చేయవచ్చు.

పరికరం మీ ఖాతాలో చూడటం ద్వారా మీ ఉబిడోట్స్ బ్యాకెండ్‌లో సృష్టించబడిందని మీరు ధృవీకరించవచ్చు పరికర నిర్వహణ -> పరికరాలు.

మీ పరికరాన్ని క్లిక్ చేయడం ద్వారా, సెన్సార్ యొక్క రీడింగులను నిల్వ చేసిన "దూరం" అనే వేరియబుల్ మీకు కనిపిస్తుంది. మీరు ఆర్డునో IDE లో అతికించిన కోడ్‌లో ఈ పేరు కేటాయించబడింది. మీరు మీ ఆటోమేటిక్ వేరియబుల్స్‌ని సర్దుబాటు చేయాలనుకుంటే, దయచేసి పరికర కార్డును సవరించడం ద్వారా లేదా మీ అప్లికేషన్ కోసం సరైన వేరియబుల్ నామకరణంతో నవీకరించబడిన కోడ్‌ను ఫ్లాష్ చేయడం ద్వారా చేయండి.

Feather HUZZAH ESP8266 కనెక్ట్ మరియు డేటాను ఉబిడాట్‌లకు నివేదించడంతో, ఉబిడాట్‌లను జాగ్రత్తగా రూపొందించిన కోడ్-ఫ్రీ అప్లికేషన్ కాన్ఫిగరేషన్‌ను ఉపయోగించి అప్లికేషన్‌ను రూపొందించే సమయం ఆసన్నమైంది.

దశ 5: ఉబిడోట్స్ అప్లికేషన్ డెవలప్‌మెంట్

ఉబిడోట్స్ ఈవెంట్ కాన్ఫిగరేషన్

మేము ఉబిడాట్‌లకు పంపుతున్న ప్రస్తుత రీడింగులు దూర ఇన్‌పుట్‌లు. ఈ రీడింగులను మనకు కావలసిన అవుట్‌పుట్‌లోకి అనువదించడానికి - లెక్కించిన యూనిట్లు this ఈ దశలను అనుసరించి మేము ఒక సంఘటనను సృష్టించాలి:

  1. ప్రస్తుత పరికరం లోపల "మోషన్-కంట్రోల్" "బాక్స్‌లు" అని పిలువబడే క్రొత్త డిఫాల్ట్ వేరియబుల్‌ను సృష్టించండి, ఇది క్రొత్త యూనిట్ లెక్కించబడిన ప్రతిసారీ 1 ని అందుకుంటుంది.
  2. వెళ్ళండి పరికర నిర్వహణ -> ఈవెంట్‌లు, మరియు క్రొత్త ఈవెంట్‌ను జోడించడానికి పేజీ యొక్క కుడి ఎగువ మూలలో ఉన్న బ్లూ ప్లస్ చిహ్నాన్ని క్లిక్ చేయండి.
  3. "ట్రిగ్గర్ చేస్తే" తో ప్రారంభించి మీ ఈవెంట్‌ను కాన్ఫిగర్ చేయండి:

  • వేరియబుల్ ఎంచుకోండి: "దూరం"
  • విలువ: విలువ (డిఫాల్ట్)
  • సెన్సార్ మరియు ప్రయాణిస్తున్న బాక్సుల మధ్య గరిష్టంగా expected హించిన దూరం than కన్నా తక్కువ లేదా సమానంగా ఉంటుంది * మా అప్లికేషన్ 500 మిమీ కోసం పిలుస్తుంది
  • కోసం 0 నిమిషాలు
  • సేవ్

4. ట్రిగ్గర్‌లు మీ అప్లికేషన్ యొక్క స్పెసిఫికేషన్‌లకు కాన్ఫిగర్ చేయబడిన తర్వాత, షరతులతో కూడిన చర్యను జోడించడానికి ఎగువ-కుడి మూలలోని నారింజ "ప్లస్" చిహ్నాన్ని క్లిక్ చేయండి.

5. చర్యగా “సెట్ వేరియబుల్” ఎంచుకోండి.

6. తరువాత, గతంలో సృష్టించిన డిఫాల్ట్ వేరియబుల్ "బాక్స్‌లు" మరియు విలువ "1" ఎంచుకోండి.

7. మార్పులను సేవ్ చేయండి. ఈవెంట్ సరిగ్గా సెటప్ చేయబడితే, సెన్సార్ మరియు యూనిట్ మధ్య దూరం సూచించిన థ్రెషోల్డ్ కంటే ఎక్కువ సమయం ఉన్న ప్రతిసారీ ఇది "1" ను పంపుతుంది, ఇది దగ్గర ఏ వస్తువు లేదని సూచిస్తుంది - మరియు ఇప్పుడే దాటిన కొత్త యూనిట్‌ను లెక్కించాలి .

ఫెదర్ నిర్దిష్ట పరికర కార్డులో, యూనిట్ ఉనికిని గ్రహించిన ఏ సమయంలోనైనా "1" పంపబడే వేరియబుల్ "బాక్స్‌లు" మీకు కనిపిస్తాయి.

పారిశ్రామిక కన్వేయర్ బెల్ట్‌లకు మరియు ఈ నమూనాను లెక్కించడానికి ప్రత్యేకంగా ఉపయోగపడుతుంది, మీ కోడింగ్ లేదా మీ అనువర్తనాల అభివృద్ధిలో వేర్వేరు వాతావరణాలకు లేదా హార్డ్‌వేర్‌కు సరిపోయే విధంగా అనుకూలీకరించవచ్చు.

8. గ్రహించిన యూనిట్ల సంఖ్యను విజువలైజ్ చేయండి (లేదా ఒక వస్తువు కనుగొనబడిన సార్లు)
ఇప్పుడు, "బాక్సుల" వేరియబుల్ ఉపయోగించి, నిర్వచించిన స్పామ్ (నిమిషాలు, గంటలు, రోజులు, వారాలు మొదలైనవి) లో వేరియబుల్ "బాక్సుల" నుండి వచ్చిన మొత్తం రీడింగులను సంకలనం చేయడానికి మేము కొత్త రోలింగ్ విండో వేరియబుల్ ను సృష్టించబోతున్నాము. ఈ అభివృద్ధిని అమలు చేయడానికి, ఈ సాధారణ దశలను అనుసరించండి:

మీ క్రొత్త రోలింగ్ విండో వేరియబుల్‌కు కింది ఆధారాలను కేటాయించండి

పరికరాన్ని ఎంచుకోండి: మోషన్-కంట్రోల్ (లేదా మీరు మీ డేటాను పంపుతున్న పరికరం పేరు)

వేరియబుల్ ఎంచుకోండి: బాక్సులను

గణించండి: మొత్తం

ప్రతి: "1" గంట (లేదా మీ దరఖాస్తు అభ్యర్థనల ప్రకారం)

ఇప్పుడు "బాక్స్‌లు / గంట" లేదా "యూనిట్లు / గంటలు" లాగా గంటలో లెక్కించిన బాక్సుల సంఖ్య (లేదా కదలికలు) సూచించే కొత్త వేరియబుల్‌కు పేరు పెట్టండి.

దశ 6: డాష్‌బోర్డ్ కాన్ఫిగరేషన్‌లు

చివరగా, గ్రహించిన యూనిట్ల సంఖ్యను ప్రదర్శించడానికి డాష్‌బోర్డ్‌ను సృష్టించండి.

పరికర నిర్వహణ -> డాష్‌బోర్డ్‌లకు వెళ్లి క్రొత్త విడ్జెట్‌ను జోడించండి. ఈ విడ్జెట్ ఈ రోజు లెక్కించిన బాక్సుల మొత్తాన్ని గంటకు విచ్ఛిన్నం చేస్తుంది.

మీ గణనను దృశ్యమానం చేయడానికి మీ క్రొత్త విడ్జెట్‌కు క్రింది ఆధారాలను కేటాయించండి.

మీరు మీ డేటాను ఎలా చూడాలనుకుంటున్నారు?: చార్ట్

ఒక రకమైన విడ్జెట్ ఎంచుకోండి: లైన్ చార్ట్

పరికరాన్ని జోడించండి: చలన నియంత్రణ

వేరియబుల్ జోడించండి: బాక్సులను / గంట

ముగించు. మరియు ఈ తుది డాష్‌బోర్డ్ అభివృద్ధితో - మీరు అప్లికేషన్ పూర్తయింది మరియు మీకు ఇప్పుడు సమర్థవంతమైన మరియు సమర్థవంతమైన కదలిక మరియు ఉనికిని గుర్తించే వ్యవస్థ ఉంది. మా ఫలితాల యొక్క తుది పరిశీలన ఇక్కడ ఉంది.

దశ 7: