the first part goes here, that gives a brief intro about this prototype.
https://tech-steel.blogspot.in/2016/01/prototype-mould-oscillation-checker.html
mould acceleration tracking
ADXL335 is an analog sensor with a measurement range of +/- 3G-forces. but the vibrations were much smaller to be sensed by this longer range; so had to select a sensor with lesser G-force range, so that feeble vibrations can also be measured.
ADXL345 provides a user selectable range starting with a minimum of +/-2G-forces. this is a digital sensor with different registers providing controls. these registers can be accessed through arduino coding.
arduino microcontroller accesses data registers of ADXL345 to collect data, bundles the data into CSV format, and sends them serially to PC through USB or to wifi-module(ESP01). this wifi module transfers the same data to any connected client.
USB data transfer takes advantage of the inbuilt USB-to-serial converter of the arduino board. but wifi feature needs to be added separately. ESP8266 based wifi modules are fast catching up the market as IoT devices.
ESP01 is one of the many variants of ESP8266, with just 2 GPIO pins exposed on the breakout board. codes can be written in many languages, like lua scripts, micro-python, baremetal C/C++...but those are not amateur friendly. so i chose arduino-IDE with the supporting ESP8266-core added into it.
loading code into ESP01 is a bit cumbersome, since the GPIO-0 pin has to be GRouNded before powerup, so that ESP01 enters into programming mode in stead of native-program-run-mode. the following setup has to be made ready first with exactly those wirings, and....plugging that USB-to-TTL converter on USB port of a PC will take ESP01 into programming mode.
once ESP01 goes into programming mode, open up arduino-IDE, select the right settings from tools-menu of the IDE.
ESP01 program-loading setup in breadboard view:
above setup helps us to load a new sketch(program) onto ESP01. the sketch is coded in such a way that, it receives serial data from arduino and transfers the same to any connected wifi-client.
*******************
microcontroller sends data in CSV format to ESP01, and the ESP just sends the same exactly in that CSV format to client.
total setup goes this way, where ADXL345 is connected to arduino, and ESP01-Rx pin is connected to Tx pin of the arduino clone, through a voltage divider arrangement. voltage divider (or a level shifter) is necessary because, ESP01 operates on 3.3v while arduino operates on 5v.
connecting arduino Tx output to ESP01's Rx-input-pin will fry ESP01 sooner or later, but surely at some point of time. all 3 units(arduino uno, ADXL345 &ESP01) are powered from an external powersource. this is a must, because as ESP transfers data in bursts, there's an extremely heavy current fluctuation on the source. so it is better to avoid sourcing power for ADXL345& for ESP01 from arduino.
i have not added capacitors to take care of voltage fluctuations; i will add one between Vcc and GND of ESP before real trials.
*****************
any client must connect to the ACCESS POINT(adhirvu_alavi) generated by ESP01. once connected, there's another program(written in programming language) that receives the data through the specified socket with particular IP(120.120.120.120) & port(265), and presents the raw data in real-time graph format on monitor.
total setup in breadboard view:
i made videos of uploading codes on ESP01 & arduino clone, also of graph on monitor; unedited videos are too huge to upload here. i will edit those lengthy videos into short ones, upload them to youtube & will share the links here sooner.
codes:
1. arduino UNO clone needs a code, to scan ADXL345's buffers and get acceleration data. written in arduino IDE.
http://tech-steel.blogspot.in/2017/08/arduino-code-to-read-adxl345-and-to.html
2. ESP01 needs a code, to setup an ACCESS POINT for wifi clients to connect to, to receive data from arduino's Tx pin to ESP01's Rx pin & to transfer data from arduino to wifi-client. this was written in arduino IDE, invoking ESPwifi-core into that environ.
http://tech-steel.blogspot.in/2017/08/code-for-esp01-to-setup-access-point-etc.html
3. client (windows-based wifi-device) needs a program (processing language) that can capture the data aired by ESP01, and display that data as a real-time-graph.
http://tech-steel.blogspot.in/2017/08/processing-language-code-to-serially.html
improvements:
1. arduino uno clone runs at 16MHz speed, while arduino-M0 & arduino-DUE variants run at 48MHz & 84MHz respectively; that is 3&5 times the speed of uno-model. further, in uno instructions are processed in 8bit format, while M0& DUE support 32bit format, thereby the buswidth is also increased.
arduino101 variant brings yet another advantage, combining 32Mhz speed intel-curie module and BMI160 accelerometer in-built on the board. this accelerometer has a minimum range of +/-2G-forces same as ADXL345.
arduino esplora also has an accelerometer (MMA7361) in-built on the board, that measures a range of +/-1.5G-forces. hence sensitivity is improved.
a more sensitive breakout board could be BMA180(bosch made) from sparkfun, but this product has been discontinued.
the most sensitive i found is, ADXL313 with range starting at +/-0.5 G-force, which will measure the lightest of vibrations.
ADXL213/350 could prove helpful with range starting at +/-1.2 G-force.
trials with all the above & any combination of them will burn a big whole not just on my pocket but on my rear too. so...., won't test any of these.
2. in stead of having a separate ESP01, arduino variants with in-built wifi will provide advantages like better stability, smaller footprint, easy coding setups. arduino tian , genuino and yun are also faster boards with in-built wifi feature.
3. to power these up, we need a source that can supply 5v at a rate of at least 1.5 to 2A. wifi data transfer involves a lot of bursts and hence fluctuations on power. tried with AA type batteries in 4S2P arrangement, but that was not at all enough. finally powered from wallsocket(not a truly portable wifi device :-(. ) li-ion or li-polymer batteries are better alternatives, but no time to try them now.
videos:
https://youtu.be/jdT8XfH8cqs
https://youtu.be/qPb5NlMKo6k
https://youtu.be/E0pOcwH7neA
https://youtu.be/kHSSvnSYPzk
https://tech-steel.blogspot.in/2016/01/prototype-mould-oscillation-checker.html
mould acceleration tracking
ADXL335 is an analog sensor with a measurement range of +/- 3G-forces. but the vibrations were much smaller to be sensed by this longer range; so had to select a sensor with lesser G-force range, so that feeble vibrations can also be measured.
ADXL345 provides a user selectable range starting with a minimum of +/-2G-forces. this is a digital sensor with different registers providing controls. these registers can be accessed through arduino coding.
arduino microcontroller accesses data registers of ADXL345 to collect data, bundles the data into CSV format, and sends them serially to PC through USB or to wifi-module(ESP01). this wifi module transfers the same data to any connected client.
USB data transfer takes advantage of the inbuilt USB-to-serial converter of the arduino board. but wifi feature needs to be added separately. ESP8266 based wifi modules are fast catching up the market as IoT devices.
ESP01 is one of the many variants of ESP8266, with just 2 GPIO pins exposed on the breakout board. codes can be written in many languages, like lua scripts, micro-python, baremetal C/C++...but those are not amateur friendly. so i chose arduino-IDE with the supporting ESP8266-core added into it.
loading code into ESP01 is a bit cumbersome, since the GPIO-0 pin has to be GRouNded before powerup, so that ESP01 enters into programming mode in stead of native-program-run-mode. the following setup has to be made ready first with exactly those wirings, and....plugging that USB-to-TTL converter on USB port of a PC will take ESP01 into programming mode.
once ESP01 goes into programming mode, open up arduino-IDE, select the right settings from tools-menu of the IDE.
ESP01 program-loading setup in breadboard view:
actual setup to load ESP01 program follows here....
*******************
microcontroller sends data in CSV format to ESP01, and the ESP just sends the same exactly in that CSV format to client.
total setup goes this way, where ADXL345 is connected to arduino, and ESP01-Rx pin is connected to Tx pin of the arduino clone, through a voltage divider arrangement. voltage divider (or a level shifter) is necessary because, ESP01 operates on 3.3v while arduino operates on 5v.
connecting arduino Tx output to ESP01's Rx-input-pin will fry ESP01 sooner or later, but surely at some point of time. all 3 units(arduino uno, ADXL345 &ESP01) are powered from an external powersource. this is a must, because as ESP transfers data in bursts, there's an extremely heavy current fluctuation on the source. so it is better to avoid sourcing power for ADXL345& for ESP01 from arduino.
i have not added capacitors to take care of voltage fluctuations; i will add one between Vcc and GND of ESP before real trials.
*****************
any client must connect to the ACCESS POINT(adhirvu_alavi) generated by ESP01. once connected, there's another program(written in programming language) that receives the data through the specified socket with particular IP(120.120.120.120) & port(265), and presents the raw data in real-time graph format on monitor.
total setup in breadboard view:
following is the actual total-setup.
i made videos of uploading codes on ESP01 & arduino clone, also of graph on monitor; unedited videos are too huge to upload here. i will edit those lengthy videos into short ones, upload them to youtube & will share the links here sooner.
codes:
1. arduino UNO clone needs a code, to scan ADXL345's buffers and get acceleration data. written in arduino IDE.
http://tech-steel.blogspot.in/2017/08/arduino-code-to-read-adxl345-and-to.html
2. ESP01 needs a code, to setup an ACCESS POINT for wifi clients to connect to, to receive data from arduino's Tx pin to ESP01's Rx pin & to transfer data from arduino to wifi-client. this was written in arduino IDE, invoking ESPwifi-core into that environ.
http://tech-steel.blogspot.in/2017/08/code-for-esp01-to-setup-access-point-etc.html
3. client (windows-based wifi-device) needs a program (processing language) that can capture the data aired by ESP01, and display that data as a real-time-graph.
http://tech-steel.blogspot.in/2017/08/processing-language-code-to-serially.html
improvements:
1. arduino uno clone runs at 16MHz speed, while arduino-M0 & arduino-DUE variants run at 48MHz & 84MHz respectively; that is 3&5 times the speed of uno-model. further, in uno instructions are processed in 8bit format, while M0& DUE support 32bit format, thereby the buswidth is also increased.
arduino101 variant brings yet another advantage, combining 32Mhz speed intel-curie module and BMI160 accelerometer in-built on the board. this accelerometer has a minimum range of +/-2G-forces same as ADXL345.
arduino esplora also has an accelerometer (MMA7361) in-built on the board, that measures a range of +/-1.5G-forces. hence sensitivity is improved.
a more sensitive breakout board could be BMA180(bosch made) from sparkfun, but this product has been discontinued.
the most sensitive i found is, ADXL313 with range starting at +/-0.5 G-force, which will measure the lightest of vibrations.
ADXL213/350 could prove helpful with range starting at +/-1.2 G-force.
trials with all the above & any combination of them will burn a big whole not just on my pocket but on my rear too. so...., won't test any of these.
2. in stead of having a separate ESP01, arduino variants with in-built wifi will provide advantages like better stability, smaller footprint, easy coding setups. arduino tian , genuino and yun are also faster boards with in-built wifi feature.
3. to power these up, we need a source that can supply 5v at a rate of at least 1.5 to 2A. wifi data transfer involves a lot of bursts and hence fluctuations on power. tried with AA type batteries in 4S2P arrangement, but that was not at all enough. finally powered from wallsocket(not a truly portable wifi device :-(. ) li-ion or li-polymer batteries are better alternatives, but no time to try them now.
videos:
https://youtu.be/jdT8XfH8cqs
https://youtu.be/qPb5NlMKo6k
https://youtu.be/E0pOcwH7neA
https://youtu.be/kHSSvnSYPzk
The ultrasonic water flow meter by eTAZ Systems uses non-invasive ultrasonic technology for accurate, real-time flow measurement.
ReplyDelete