mirror of
				https://github.com/eclipse/upm.git
				synced 2025-11-04 09:05:34 +03:00 
			
		
		
		
	ta12200: Initial implementation; Grove Electricity uses this sensor
[renamed from] groveelectricity: Initial implementation This module adds support for the Grove Electricity sensor. Signed-off-by: Jon Trulson <jtrulson@ics.com> Signed-off-by: Zion Orent <zorent@ics.com> Signed-off-by: Sarah Knepper <sarah.knepper@intel.com>
This commit is contained in:
		
				
					committed by
					
						
						Sarah Knepper
					
				
			
			
				
	
			
			
			
						parent
						
							ed15b1042d
						
					
				
				
					commit
					4333869b7b
				
			@@ -59,6 +59,7 @@ add_executable (a110x-example a110x.cxx)
 | 
				
			|||||||
add_executable (gp2y0a21yk-example gp2y0a21yk.cxx)
 | 
					add_executable (gp2y0a21yk-example gp2y0a21yk.cxx)
 | 
				
			||||||
add_executable (grovemoisture-example grovemoisture.cxx)
 | 
					add_executable (grovemoisture-example grovemoisture.cxx)
 | 
				
			||||||
add_executable (groveehr-example groveehr.cxx)
 | 
					add_executable (groveehr-example groveehr.cxx)
 | 
				
			||||||
 | 
					add_executable (ta12200-example ta12200.cxx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l)
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l)
 | 
				
			||||||
include_directories (${PROJECT_SOURCE_DIR}/src/grove)
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/grove)
 | 
				
			||||||
@@ -105,6 +106,7 @@ include_directories (${PROJECT_SOURCE_DIR}/src/a110x)
 | 
				
			|||||||
include_directories (${PROJECT_SOURCE_DIR}/src/gp2y0a21yk)
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/gp2y0a21yk)
 | 
				
			||||||
include_directories (${PROJECT_SOURCE_DIR}/src/grovemoisture)
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/grovemoisture)
 | 
				
			||||||
include_directories (${PROJECT_SOURCE_DIR}/src/groveehr)
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/groveehr)
 | 
				
			||||||
 | 
					include_directories (${PROJECT_SOURCE_DIR}/src/ta12200)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
@@ -167,3 +169,4 @@ target_link_libraries (a110x-example a110x ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			|||||||
target_link_libraries (gp2y0a21yk-example gp2y0a21yk ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries (gp2y0a21yk-example gp2y0a21yk ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
target_link_libraries (grovemoisture-example grovemoisture ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries (grovemoisture-example grovemoisture ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
target_link_libraries (groveehr-example groveehr ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries (groveehr-example groveehr ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
 | 
					target_link_libraries (ta12200-example ta12200 ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										47
									
								
								examples/javascript/ta12200.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								examples/javascript/ta12200.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					/*jslint node:true, vars:true, bitwise:true, unparam:true */
 | 
				
			||||||
 | 
					/*jshint unused:true */
 | 
				
			||||||
 | 
					/*global */
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					* Author: Zion Orent <zorent@ics.com>
 | 
				
			||||||
 | 
					* Copyright (c) 2014 Intel Corporation.
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* Permission is hereby granted, free of charge, to any person obtaining
 | 
				
			||||||
 | 
					* a copy of this software and associated documentation files (the
 | 
				
			||||||
 | 
					* "Software"), to deal in the Software without restriction, including
 | 
				
			||||||
 | 
					* without limitation the rights to use, copy, modify, merge, publish,
 | 
				
			||||||
 | 
					* distribute, sublicense, and/or sell copies of the Software, and to
 | 
				
			||||||
 | 
					* permit persons to whom the Software is furnished to do so, subject to
 | 
				
			||||||
 | 
					* the following conditions:
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* The above copyright notice and this permission notice shall be
 | 
				
			||||||
 | 
					* included in all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
				
			||||||
 | 
					* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
				
			||||||
 | 
					* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
				
			||||||
 | 
					* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
				
			||||||
 | 
					* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var electricitySensor = require('jsupm_ta12200');
 | 
				
			||||||
 | 
					// Instantiate a TA12-200 sensor on analog pin A0
 | 
				
			||||||
 | 
					var myElectricitySensor = new electricitySensor.TA12200(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getElectricityInfo()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						var maxVal = myElectricitySensor.highestValue();
 | 
				
			||||||
 | 
						var current = myElectricitySensor.milliAmps(maxVal);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						console.log("Max ADC Value: " + maxVal + ", current: " + current + "mA");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					setInterval(getElectricityInfo, 100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Print message when exiting
 | 
				
			||||||
 | 
					process.on('SIGINT', function()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						console.log("Exiting...");
 | 
				
			||||||
 | 
						process.exit(0);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										65
									
								
								examples/ta12200.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								examples/ta12200.cxx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Jon Trulson <jtrulson@ics.com>
 | 
				
			||||||
 | 
					 * Copyright (c) 2014 Intel Corporation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining
 | 
				
			||||||
 | 
					 * a copy of this software and associated documentation files (the
 | 
				
			||||||
 | 
					 * "Software"), to deal in the Software without restriction, including
 | 
				
			||||||
 | 
					 * without limitation the rights to use, copy, modify, merge, publish,
 | 
				
			||||||
 | 
					 * distribute, sublicense, and/or sell copies of the Software, and to
 | 
				
			||||||
 | 
					 * permit persons to whom the Software is furnished to do so, subject to
 | 
				
			||||||
 | 
					 * the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be
 | 
				
			||||||
 | 
					 * included in all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
				
			||||||
 | 
					 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
				
			||||||
 | 
					 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
				
			||||||
 | 
					 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <signal.h>
 | 
				
			||||||
 | 
					#include "ta12200.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int shouldRun = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sig_handler(int signo)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (signo == SIGINT)
 | 
				
			||||||
 | 
					    shouldRun = false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  signal(SIGINT, sig_handler);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//! [Interesting]
 | 
				
			||||||
 | 
					  // Instantiate a TA12-200 sensor on analog pin A0
 | 
				
			||||||
 | 
					  upm::TA12200* electricity = new upm::TA12200(0);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  while (shouldRun)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      unsigned int maxVal = electricity->highestValue();
 | 
				
			||||||
 | 
					      float current = electricity->milliAmps(maxVal);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      cout << "Max ADC Value: " << maxVal << ", current: " << current
 | 
				
			||||||
 | 
					           << "mA" << endl;
 | 
				
			||||||
 | 
					      usleep(100000);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//! [Interesting]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cout << "Exiting..." << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete electricity;
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								src/ta12200/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/ta12200/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					set (libname "ta12200")
 | 
				
			||||||
 | 
					set (libdescription "upm ta12200 current transformer module")
 | 
				
			||||||
 | 
					set (module_src ${libname}.cxx)
 | 
				
			||||||
 | 
					set (module_h ${libname}.h)
 | 
				
			||||||
 | 
					upm_module_init()
 | 
				
			||||||
							
								
								
									
										8
									
								
								src/ta12200/jsupm_ta12200.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/ta12200/jsupm_ta12200.i
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					%module jsupm_ta12200
 | 
				
			||||||
 | 
					%include "../upm.i"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%{
 | 
				
			||||||
 | 
					    #include "ta12200.h"
 | 
				
			||||||
 | 
					%}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%include "ta12200.h"
 | 
				
			||||||
							
								
								
									
										9
									
								
								src/ta12200/pyupm_ta12200.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/ta12200/pyupm_ta12200.i
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					%module pyupm_ta12200
 | 
				
			||||||
 | 
					%include "../upm.i"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%feature("autodoc", "3");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%include "ta12200.h"
 | 
				
			||||||
 | 
					%{
 | 
				
			||||||
 | 
					    #include "ta12200.h"
 | 
				
			||||||
 | 
					%}
 | 
				
			||||||
							
								
								
									
										112
									
								
								src/ta12200/ta12200.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								src/ta12200/ta12200.cxx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Jon Trulson <jtrulson@ics.com>
 | 
				
			||||||
 | 
					 * Copyright (c) 2014 Intel Corporation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining
 | 
				
			||||||
 | 
					 * a copy of this software and associated documentation files (the
 | 
				
			||||||
 | 
					 * "Software"), to deal in the Software without restriction, including
 | 
				
			||||||
 | 
					 * without limitation the rights to use, copy, modify, merge, publish,
 | 
				
			||||||
 | 
					 * distribute, sublicense, and/or sell copies of the Software, and to
 | 
				
			||||||
 | 
					 * permit persons to whom the Software is furnished to do so, subject to
 | 
				
			||||||
 | 
					 * the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be
 | 
				
			||||||
 | 
					 * included in all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
				
			||||||
 | 
					 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
				
			||||||
 | 
					 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
				
			||||||
 | 
					 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ta12200.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace upm;
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TA12200::TA12200(int pin)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  initClock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( !(m_aio = mraa_aio_init(pin)) )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      cerr << __FUNCTION__ << ": mraa_aio_init() failed" << endl;
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TA12200::~TA12200()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  mraa_aio_close(m_aio);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TA12200::initClock()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  gettimeofday(&m_startTime, NULL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t TA12200::getMillis()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct timeval elapsed, now;
 | 
				
			||||||
 | 
					  uint32_t elapse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // get current time
 | 
				
			||||||
 | 
					  gettimeofday(&now, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // compute the delta since m_startTime
 | 
				
			||||||
 | 
					  if( (elapsed.tv_usec = now.tv_usec - m_startTime.tv_usec) < 0 ) 
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      elapsed.tv_usec += 1000000;
 | 
				
			||||||
 | 
					      elapsed.tv_sec = now.tv_sec - m_startTime.tv_sec - 1;
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
 | 
					  else 
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      elapsed.tv_sec = now.tv_sec - m_startTime.tv_sec;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  elapse = (uint32_t)((elapsed.tv_sec * 1000) + (elapsed.tv_usec / 1000));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // never return 0
 | 
				
			||||||
 | 
					  if (elapse == 0)
 | 
				
			||||||
 | 
					    elapse = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return elapse;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned int TA12200::highestValue()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  unsigned int hiVal = 0;
 | 
				
			||||||
 | 
					  unsigned int val;
 | 
				
			||||||
 | 
					  uint32_t start = getMillis();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 1 second
 | 
				
			||||||
 | 
					  while (getMillis() < (start + 1000))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      val = mraa_aio_read(m_aio);
 | 
				
			||||||
 | 
					      if (val > hiVal)
 | 
				
			||||||
 | 
					        hiVal = val;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					  return hiVal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float TA12200::milliAmps(unsigned int val, int res)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  float ampCurrent;
 | 
				
			||||||
 | 
					  float effectiveVal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // From grove wiki page:
 | 
				
			||||||
 | 
					  // minimum_current=1/1024*5/800*2000000/1.414=8.6(mA) 
 | 
				
			||||||
 | 
					  // Only for sinusoidal alternating current
 | 
				
			||||||
 | 
					  //ampCurrent = float(val) / float(res) * 5.0 / 800.0 * 2000000.0;
 | 
				
			||||||
 | 
					  ampCurrent = float(val) / float(res) * 12500.0;
 | 
				
			||||||
 | 
					  effectiveVal = ampCurrent/1.414;
 | 
				
			||||||
 | 
					  return (effectiveVal);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										99
									
								
								src/ta12200/ta12200.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								src/ta12200/ta12200.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Author: Jon Trulson <jtrulson@ics.com>
 | 
				
			||||||
 | 
					 * Copyright (c) 2014 Intel Corporation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining
 | 
				
			||||||
 | 
					 * a copy of this software and associated documentation files (the
 | 
				
			||||||
 | 
					 * "Software"), to deal in the Software without restriction, including
 | 
				
			||||||
 | 
					 * without limitation the rights to use, copy, modify, merge, publish,
 | 
				
			||||||
 | 
					 * distribute, sublicense, and/or sell copies of the Software, and to
 | 
				
			||||||
 | 
					 * permit persons to whom the Software is furnished to do so, subject to
 | 
				
			||||||
 | 
					 * the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice shall be
 | 
				
			||||||
 | 
					 * included in all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
				
			||||||
 | 
					 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
				
			||||||
 | 
					 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
				
			||||||
 | 
					 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <sys/time.h>
 | 
				
			||||||
 | 
					#include <mraa/aio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// default ADC resolution. 
 | 
				
			||||||
 | 
					#define TA12200_ADC_RES 1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace upm {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @brief C++ API for the TA12-200 current transformer
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * UPM module for the TA12-200 current transformer, which is found,
 | 
				
			||||||
 | 
					   * for instance, in the Grove Electricity Sensor. 
 | 
				
			||||||
 | 
					   * This module can measure AC current moving through a wire at up 
 | 
				
			||||||
 | 
					   * to 5A.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @ingroup analog
 | 
				
			||||||
 | 
					   * @snippet ta12200.cxx Interesting
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  class TA12200 {
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * TA12200 sensor constructor
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param pin analog pin to use
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    TA12200(int pin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * TA12200 Destructor
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    ~TA12200();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Return the number of milliseconds elapsed since initClock()
 | 
				
			||||||
 | 
					     * was last called.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return elapsed milliseconds
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    uint32_t getMillis();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Reset the Clock
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void initClock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the conversion value from the sensor
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return the highest value obtained over 1 second of measuring
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    unsigned int highestValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Compute the measured voltage
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param val value measured by highestValue()
 | 
				
			||||||
 | 
					     * @param res ADC resolution
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return the measured current in milliamps
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    float milliAmps(unsigned int val, int res=TA12200_ADC_RES);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private:
 | 
				
			||||||
 | 
					    struct timeval m_startTime;
 | 
				
			||||||
 | 
					    mraa_aio_context m_aio;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user