Circuits

Paano Gumawa ng isang Pagtuklas ng Paggalaw System Sa Arduino: 7 Hakbang

Arduino Challenge: Serial Control of Arduino Uno

Arduino Challenge: Serial Control of Arduino Uno

Talaan ng mga Nilalaman:

Anonim

Gumawa ng isang motion and production counter counter gamit ang Feather HUZZAH na naka-program sa Arduino at pinapatakbo ng Ubidots.

Ang mabisang pisikal na paggalaw at pagtukoy ng presensya sa Smart Homes at Smart Manufacturing ay maaaring maging lubhang kapaki-pakinabang sa mga application mula sa matatanda na Mga Tulong sa Pamumuhay na Tinitirhan ng Ambient (AAL) o isang Production Counting System na kumakain ng mas malaking MES. Kasama sa iba pang mga application para sa Paggalaw at Pagdating ng Presensya ngunit hindi limitado sa:

  1. Pinto at pag-aautomat ng gate
  2. Mga sensor sa paradahan upang magtalaga ng mga libreng lugar
  3. Remote monitoring ng tangke ng tangke
  4. Mga Smart tahanan at pasilidad para sa pag-iilaw at seguridad
  5. Mga pagtuklas ng unit at pagbibilang sa mga linya ng conveyor
  6. Markahan ang pagtuklas sa mga nakalimbag na materyales
  7. Ang pagtuklas ng likido sa loob ng karton, plastic, at papel tilts
  8. Pagtuklas ng distansya
  9. Mga counter ng tao

Habang maraming mga application para sa presensya at paggalaw, may mga pantay bilang maraming mga sensors upang mangolekta ng data, tulad ng capacitive, inductive, photoelectric, at ultrasonic sensors. Depende sa mga gastos, mga kondisyon sa kapaligiran, at mga kinakailangan sa katumpakan, dapat piliin ng isa ang pinakamahusay na hardware na angkop para sa isang kapaligiran at mga kinakailangan sa aplikasyon.

Para sa tutorial na ito, tutukuyin namin ang paggawa ng real-time na counter ng produksyon; bibilangin ng application ang bawat yunit na dumadaan sa isang conveyor belt. Gagamitin namin ang Arduino IDE sa programa ng isang Feather HUZZAH ESP8266, isang ultrasonic sensor, at Ubidots upang bumuo ng aming application at ipakita ang aming dashboard ng IoT.

Mga Kagamitan:

Hakbang 1: Mga Kinakailangan

  1. Feather HUZZAH na may ESP8266MB7389-100
  2. Ultrasonic Sensor
  3. Arduino IDE 1.8.2 o mas mataas
  4. Mga account ng Ubidot-o- Lisensya sa Pang-edukasyon

Hakbang 2: Pag-setup

  • I Hardware Setup
  • II. Pag-setup ng Firmware
  • III. Ubidots Application Development (mga kaganapan, mga variable, at mga dashboard)

Hakbang 3: Hardware Setup

Ang Ultrasonic Sensor MB7389-100 ay isang opsyon na may mababang halaga para sa mga aplikasyon ng Industrial na may mga kinakailangan sa pag-inom ng malawak at mababang kapangyarihan sa mahihirap na kondisyon ng panahon salamat sa IPv67 rating nito.

Upang magsimula, i-mirror ang diagram sa ibaba upang ilakip ang ultrasonic sensor sa Balahibo HUZZAH ESP8266.

TANDAAN: Maaaring kunin ang pagbabasa ng sensor bilang mga pagbabasa ng analog o PWM; sa ibaba ipapaliwanag namin ang setup para sa pagbabasa ng PWM, para sa karagdagang impormasyon mangyaring tingnan ang mga halimbawa na ipinapakita sa itaas.

Opsyonal ilagay ang micro-controller at ang mga sensors sa loob ng kaso ng IP67 upang maprotektahan ang mga ito mula sa alikabok, tubig, at iba pang nagbabantang kapaligiran. Ang karaniwang kaso ay mukhang katulad ng ipinakita sa mga larawan sa itaas.

Hakbang 4: Pag-setup ng Firmware

Una, dapat mong i-install ang Feather Huzzah sa Arduino IDE at ipunin ang code. Tandaan na i-verify ang set up na ito sa pamamagitan ng paggawa ng simpleng blinking test. Para sa karagdagang impormasyon tungkol sa pagkonekta sa iyong Feather device tingnan ang kapaki-pakinabang na gabay sa pag-setup ng hardware.

Upang magpadala ng data ng sensor sa Ubidots IoT Development Platform, kopyahin at i-paste ang code sa ibaba sa Arduino IDE. Tandaan na italaga ang pangalan ng network ng Wi-Fi, password, at ang iyong Token account ng Token kung saan nakalagay sa code.

/ ******************************** Mga Aklatan kasama *************** **************** / # isama / ******************************** Mga Constant at mga bagay ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; / / Ilagay dito ang iyong SSID nameconst char * SSID_PASS = "xxxxxxxx"; / / Ilagay dito ang iyong passwordconst char * TOKEN = "Assig_your_ubidots_token"; / / Ilagay dito ang iyong TOKENconst char * DEVICE_LABEL = "paggalaw ng paggalaw"; // Ang iyong aparato labelconst char * VARIABLE_LABEL = "distansya"; // Ang iyong variable labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Mga gumagamit ng Ubidot ng Negosyo // const char * HTTPSERVER = " things.ubidots.com "; / / Ubidots Pang-edukasyon ng mga gumagamit ng HTTPPORT = 80; / * Ultrasonic Sensor * / const int pwPin1 = 5; // Ang PWM pin kung saan ang sensor ay konektadoWiFiClient clientUbi; / ******************************** Auxiliar Function *** **************************** // ** Nakakakuha ng haba ng katawan @arg variable ang katawan ng uri ng char @ ulitin ang dataLan ang haba ng variable * / int dataLen (char * variable) {uint8_t dataLen = 0; para sa (int i = 0; i <= 250; i ++) {if (variable i! = ' 0') {dataLen ++; } ibang {break; }} return dataLen;} / ******************************** Main Function ********* ********************** / walang bisa setup () {Serial.begin (115200); / * Nag-uugnay sa AP * / WiFi.begin (SSID_NAME, SSID_PASS); habang (WiFi.status ()! = WL_CONNECTED) {pagkaantala (500); Serial.print ("."); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (true); Serial.println (F ("konektado sa WiFi")); Serial.println (F ("IP address:")); Serial.println (WiFi.localIP ());} void loop () {/ * Ang pagbabasa ng sensor ay ibinalik sa millimeters, kung nais ninyong i-convert * ito sa pulgada lumikha lamang ng variable na tumuturo sa -> distansya / 25.4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distansya); pagkaantala (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Space upang mag-imbak ng mga halaga upang magpadala * / char str_val 10; / * ---- Binabago ang mga halaga ng mga sensors sa char uri ----- * / / * 4 ay mininum lapad, 2 ay katumpakan; Ang float value ay kinopya sa str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Binubuo ang katawan upang maipadala sa kahilingan * / sprintf (katawan, "{"% s ":% s}", variable_label, str_val); / * Binubuo ang kahilingan ng HTTP na POST * / sprintf (data, "POST /api/v1.6/devices/%s", device_label); sprintf (data, "% HTTP / 1.1 r", data); sprintf (data, "% sHost: things.ubidots.com r", data); sprintf (data, "% sUser-Agent:% s /% s r", data, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s r", data, TOKEN); sprintf (data, "% sConnection: malapit r", data); sprintf (data, "% sContent-Type: application / json r", data); sprintf (data, "% sContent-Length:% d r n r n", data, dataLen (katawan)); sprintf (data, "% s% s r n r n", data, katawan); / * Paunang koneksyon * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * I-verify ang koneksyon ng client * / kung (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Pag-post ng iyong mga variable:")); Serial.println (data); / * Ipadala ang HTTP Request * / clientUbi.print (data); } / * Habang ang client ay magagamit basahin ang tugon ng server * / habang (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Libreng memorya * / libre (data); libre (katawan); / * Itigil ang client * / clientUbi.stop ();}

ProTip: maaari mong suriin kung ang iyong aparato ay konektado nang tama sa pamamagitan ng pagbubukas ng serial monitor sa Arduino IDE.

Maaari mong i-verify ang isang aparato ay nilikha sa iyong backend ng Ubidots sa pamamagitan ng pagtingin nito sa Pamamahala ng Device ng iyong account -> Mga Device.

Sa pamamagitan ng pag-click sa iyong aparato, makikita mo ang isang variable na tinatawag na "distansya" kung saan ang mga pagbabasa ng sensor ay naka-imbak. Ang pangalan na ito ay itinalaga sa code na na-paste mo lamang sa Arduino IDE. Kung nais mong ayusin ang iyong mga awtomatikong variable, mangyaring gawin ito sa pamamagitan ng pag-edit ng Device card o sa pamamagitan ng flashing isang na-update na code sa tamang variable na katawagan para sa iyong application.

Gamit ang Feather HUZZAH ESP8266 na nakakonekta at nag-uulat ng data sa Ubidots, oras na ngayon upang bumuo ng application gamit ang Ubidots na maingat na idinisenyo ang libreng configuration ng application na code.

Hakbang 5: Ubidots Application Development

Configuration ng Kaganapan ng Ubidots

Ang mga kasalukuyang pagbabasa na ipinadala namin sa Ubidots ay mga input ng distansya. Para sa pagsasalin ng mga pagbasa na ito sa ninanais na output na gusto namin-natukoy na mga unit-dapat kaming lumikha ng isang kaganapan kasunod ng mga hakbang na ito:

  1. Sa loob ng kasalukuyang "paggalaw ng kilos" ng aparato ay lumikha ng isang bagong variable ng default na tinatawag na "mga kahon", na makakatanggap ng isang 1 tuwing may isang bagong yunit na binibilang.
  2. Pumunta sa Pamamahala ng Device -> Mga Kaganapan, at i-click ang icon na asul na plus sa kanang sulok sa itaas ng pahina upang magdagdag ng bagong kaganapan.
  3. I-configure ang iyong kaganapan na nagsisimula sa "Kung nag-trigger":

  • Pumili ng isang variable: "distansya"
  • Halaga: halaga (default)
  • Ay mas mababa sa o katumbas ng ang maximum na inaasahang distansya sa pagitan ng sensor at ang mga kahon na dumadaan sa * ang aming mga tawag sa aplikasyon para sa 500mm
  • Para sa 0 minuto
  • I-save

4. Sa sandaling na-configure ang mga trigger sa mga pagtutukoy ng iyong application, i-click ang orange na "plus" na icon sa kanang sulok sa itaas upang magdagdag ng isang kondisyonal na pagkilos.

5. Piliin ang "Itakda ang Variable" bilang ang pagkilos.

6. Susunod, piliin ang naunang nilikha na default na "mga kahon" at halaga "1".

7. I-save ang mga pagbabago. Kung ang kaganapan ay maayos na naka-set up, magpapadala ito ng isang "1" sa bawat oras na ang distansya sa pagitan ng sensor at ang yunit ay mas mahaba kaysa sa isang nakasaad na threshold, na nagpapahiwatig na walang bagay na malapit - at dapat bilangin ang isang bagong yunit na naipasa lamang ng .

Sa tiyak na Device card ng Feather, makikita mo na ang variable na "mga kahon" kung saan ang isang "1" ay ipinadala sa anumang oras ng presensya ng yunit ay nadama.

Lalo na kapaki-pakinabang para sa pang-industriyang conveyor belt at yunit ng pagbilang ng prototype na ito ay maaaring ipasadya upang umangkop sa iba't ibang mga kapaligiran o hardware lamang sa iyong coding o pag-unlad ng iyong mga application.

8. I-visualize ang bilang ng mga yunit ng sensed (o mga oras ng isang bagay ay nakita)
Ngayon, gamit ang variable ng "mga kahon", pupuntahan naming lumikha ng isang bagong rolling window variable upang ibilang ang kabuuang halaga ng pagbabasa na natanggap mula sa variable na "mga kahon" sa isang tinukoy na spam (minuto, oras, araw, linggo, atbp). Upang maisagawa ang pag-unlad na ito, sundin ang mga simpleng hakbang na ito:

Magtalaga ng mga sumusunod na kredensyal sa iyong bagong rolling window variable

Pumili ng isang device: paggalaw-kontrol (o ang pangalan ng device na iyong pinapadala ang iyong data)

Pumili ng isang variable: mga kahon

Kumpirmahin ang: kabuuan

Bawat: "1" oras (o ayon sa iyong mga kahilingan sa aplikasyon)

Ngayon magtalaga ng isang pangalan sa bagong variable na nagpapahiwatig ng bilang ng mga kahon (o mga paggalaw) na binibilang sa isang oras, tulad ng "mga kahon / oras" o "mga yunit / oras.

Hakbang 6: Mga Configuration ng Dashboard

Panghuli, lumikha ng isang dashboard upang ipakita ang bilang ng mga sensed unit.

Pumunta sa Pamamahala ng Device -> Mga Dashboard at magdagdag ng bagong widget. Ipapakita ng widget na ito ang dami ng mga kahon na nabibilang ngayon na pinaghiwa-hiwalay ayon sa oras.

Magtalaga ng mga sumusunod na kredensyal sa iyong bagong widget upang mailarawan ang iyong bilang.

Paano mo gustong makita ang iyong data ?: Tsart

Pumili ng isang uri ng widget: line chart

Magdagdag ng isang device: paggalaw-kontrol

Magdagdag ng variable: mga kahon / oras

Tapusin. At sa huling pag-unlad ng dashboard na ito - ang application mo ay kumpleto na at mayroon ka na ngayong mahusay at epektibong paggalaw at sistema ng pagtukoy ng presensya. Narito ang huling pagtingin sa aming mga resulta.

Hakbang 7: