Barc is ready for Embedded World | Cypress Semiconductor
Barc is ready for Embedded World
So, finally, Barc is ready to go back to Germany. Last time I had the main program working well and I just had to tune the CapSense proximity sensors. Now I do not have to thread a USB cable through Barc's mouth the tuning process was pretty simple. I just right-clicked on the CapSense component to launch the tuner, then ran the noise tests, and played with the graph view of the signals to fine-tune the threshold values. Once I got them working I just sent the values back to the project and re-built it. Here is a picture of the raw signals (on top) and the recorded active/inactive values (below) as I put my hand against the left sensor (blue), then the right (orange), and finally above them both. The goal here is to optimize sensing range without being so sensitive that both sensors always fire (because then he'll almost always just back up when a hand is anywhere near him).
While working, however, I figured that I had a couple of defects and had a good idea for one last feature. even though I said I would not do that! First the defects... at the start of the CapSense loop I had a simple if statement.
if( CAPSENSE_NO_BUSY == CapSense_IsBusy() )
This works OK but, if it is busy, then I run the risk of the state variable jumping between a CapSense state and the IR sensor. I also noticed that sometimes Barc would jump forward momentarily when I remove my hand from the side of his face. To fix this I changed the "if" to a "while" so that the code waits until there is CapSense data.
while( CapSense_IsBusy() )
{
/* Wait for CapSense */
}
This means that the code always checks the CapSense state and the jumpiness goes away.
The next problem was a slight tendency for Barc to get over-excited and run around in circles! This was happening because the motors tend to cause the noise floor to rise and the automatic baseline calculation cannot keep pace. It's not like I ever claimed this was a well-designed CapSense design! But it is a little annoying so I added some code that counts loops and periodically resets the baselines.
/* Periodically re-intialize the CapSense baseline to avoid noise-induced runaway dog */
if( 0 == ( loop_count % BASELINE_RESET_RATE ) )
{
CapSense_InitializeWidgetBaseline( CapSense_LEFT_WDGT_ID );
CapSense_InitializeWidgetBaseline( CapSense_RIGHT_WDGT_ID );
}
CapSense_ScanAllWidgets(); // Start the next scan (non blocking call)
Because Barc is going to a trade show I decided I needed to save a little power or I would be swapping batteries every hour. There are many ways to do that. The ideal method would be to track activity and, if Barc is left alone, go into a deep sleep state, waking periodically to check for a proximity event. But I'll be honest, I ran out of time, so I put in a quick and dirty fix instead. I just added a count of loops with Barc in the WAIT state and, when he's still for a while, I just stop the motors and sensors, and go into stop mode (the lowest power state). He does not start up automatically but a press of the RESET switch does the trick.
Barc and I will be at the Cypress booth during the show - from Tuesday 27th through Thursday 1st - so please stop by and give him a gentle pat on the head.
Here is whole program for your reference. the actual project with the schematic and resources set up is attached to the blog page.
/*
****************
**** Barc_2 ****
****************
Barc_2 adds an IR sensor for longer range forward visibility. He supports the following activities.
LEFT hand detected on the right proximity sensor
RIGHT hand detected on the left proximity sensor
REVERSE hand detected above (both proximity sensors)
CHASE hand detected ahead (IR sensor)
WAIT no hand detected
*/
/*
Peripheral includes
*/
#include "project.h"
/*
Library includes (for abs())
*/
#include "stdlib.h"
/*
Infrared sensor and ADC defines
*/
#define IR_POWER_ON (1)
#define IR_POWER_OFF (0)
#define IR_SENSOR_SETTLE_TIME (100)
#define IR_ADC_CHANNEL (0)
#define IR_ADC_THRESHOLD_MV (1800)
/*
H-Bridge and PWM Motor defines
*/
#define HBRIDGE_POWER_ON (1)
#define HBRIDGE_POWER_OFF (0)
#define SPEED_ILLEGAL (-1000)
#define SPEED_WALK_LEFT (38)
#define SPEED_WALK_RIGHT (40)
#define SPEED_RUN_LEFT (57)
#define SPEED_RUN_RIGHT (60)
#define SPEED_STOP (0)
/*
LED defines
*/
#define LED_ON (1)
#define LED_OFF (0)
/*
Main loop timing defines
*/
#define WAIT_DEBOUNCE_MS (50)
#define WAIT_LOOPS_PER_SECOND (1000/WAIT_DEBOUNCE_MS)
#define WAIT_LOOPS_PER_MINUTE (60*WAIT_LOOPS_PER_SECOND)
#define BASELINE_RESET_RATE (5*WAIT_LOOPS_PER_SECOND)
#define HEARTBEAT_PERIOD (20)
#define HEARTBEAT_DUTY_CYCLE (1)
/*
Definition of the supported robot states
*/
typedef enum { WAIT, CHASE, REVERSE, LEFT, RIGHT } state_t;
/*
Function declarations
*/
void motor( int, int );
/*
Function: main
Initialization:
Turn on the CapSense (proximity sensors) and I2C for tuning
Turn on the ADC (distance sensor)
Turn on the motor PWM (outputs are held high to brake the motors)
Power up the H-Bridge board
Wait for hardware to settle
Main Loop:
Read the ADC to detect an object in front
Read Capsense to detect hands to the side or above
Act on the detected state - move the robot
*/
int main(void)
{
state_t state; // Result of sensor scans
int16 range = 0; // ADC value
uint32 loop_count = 0; // Counter for heartbeat and barking
uint32_t wait_loop_count = 0; // Counter for time spent in WAIT state
int left, right; // CapSense widget states
CyGlobalIntEnable;
/*
Turn on the Capsense proximity detection (with I2C tuning)
*/
EZI2C_Start(); // Turn on I2C (over kitprog bridge)
EZI2C_EzI2CSetBuffer1( sizeof( CapSense_dsRam ), // set up I2C buffer for tuning
sizeof( CapSense_dsRam ),
(uint8 *)&CapSense_dsRam );
CapSense_Start(); // Turn on CapSense
CapSense_ScanAllWidgets(); // Start scanning
/*
Turn on the IR sensor and ADC
*/
Pin_IR_GND_Write( IR_POWER_OFF ); // Make sure ground is low
Pin_IR_Power_Write( IR_POWER_ON ); // Turn on the sensor
CyDelay( IR_SENSOR_SETTLE_TIME ); // Allow time for sensor output to be valid
ADC_IR_Sensor_Start(); // Turn on the ADC
ADC_IR_Sensor_StartConvert(); // Start sampling (free running)
/*
Turn on the motors
*/
PWM_Motor_Start(); // Turn on the 2-channel PWM
motor( SPEED_STOP, SPEED_STOP ); // Hold output high (no motion)
Pin_SLP_Write( HBRIDGE_POWER_ON ); // Turn on the H-bridge for the motors
CyDelay( 1 ); // Allow time for FLT to go low (380us)
/*
Main loop - read the IR and CapSense sensors then set motor speed accordingly
*/
for(;;)
{
/*
Start sensing - default state is WAIT (do nothing)
*/
state = WAIT;
/* Get an ADC value from the distance sensor and convert it to millivolts */
if( ADC_IR_Sensor_IsEndConversion( ADC_IR_Sensor_RETURN_STATUS ) )
{
range = ADC_IR_Sensor_GetResult16( IR_ADC_CHANNEL );
range = ADC_IR_Sensor_CountsTo_mVolts( IR_ADC_CHANNEL, range );
/* Change the state if above the proximity threshold */
if( range > IR_ADC_THRESHOLD_MV )
{
state = CHASE;
}
}
/*
CapSense - detect a hand to the left, right or overhead
*/
while( CapSense_IsBusy() )
{
/* Wait for CapSense */
}
CapSense_ProcessAllWidgets(); // Get the scan results
CapSense_RunTuner(); // Tuning across EZI2C
/* Read the scan values */
left = CapSense_IsWidgetActive( CapSense_LEFT_WDGT_ID );
right = CapSense_IsWidgetActive( CapSense_RIGHT_WDGT_ID );
/* Set the state if a hand is detected */
if( left && right )
{
state = REVERSE; // Back up
}
else if( left )
{
state = RIGHT; // Turn away
}
else if( right )
{
state = LEFT; // Turn away
}
/* Periodically re-intialize the CapSense baseline to avoid noise-induced runaway dog */
if( 0 == ( loop_count % BASELINE_RESET_RATE ) )
{
CapSense_InitializeWidgetBaseline( CapSense_LEFT_WDGT_ID );
CapSense_InitializeWidgetBaseline( CapSense_RIGHT_WDGT_ID );
}
CapSense_ScanAllWidgets(); // Start the next scan (non blocking call)
/*
State machine - act on the sensed state of the robot
*/
switch( (int)state )
{
case RIGHT:
/* reverse right motor, forward left */
motor( SPEED_WALK_LEFT, -SPEED_WALK_RIGHT );
wait_loop_count = 0;
break;
case LEFT:
/* reverse left motor, forward right */
motor( -SPEED_WALK_LEFT, SPEED_WALK_RIGHT );
wait_loop_count = 0;
break;
case REVERSE:
/* reverse both motors */
motor( -SPEED_WALK_LEFT, -SPEED_WALK_RIGHT );
wait_loop_count = 0;
break;
case CHASE:
/* forward both motors, fast */
motor( SPEED_RUN_LEFT, SPEED_RUN_RIGHT );
wait_loop_count = 0;
break;
case WAIT:
default:
/* stop both motors */
motor( SPEED_STOP, SPEED_STOP );
/* sleep if left alone too long */
wait_loop_count++;
if( wait_loop_count > WAIT_LOOPS_PER_MINUTE )
{
/* Turn everything off */
Pin_Status_Write( LED_OFF );
Pin_IR_Power_Write( IR_POWER_OFF );
Pin_SLP_Write( HBRIDGE_POWER_OFF );
/* Turn off the peripherals */
ADC_IR_Sensor_Stop();
PWM_Motor_Stop();
EZI2C_Stop();
CapSense_Stop();
CySysPmStop(); // Re-start via RESET switch
}
break;
}
/* Create an inverse heart beat (mostly on, briefly off) with the LED */
Pin_Status_Write( ( loop_count > HEARTBEAT_DUTY_CYCLE ) ? LED_ON : LED_OFF );
loop_count++;
if( loop_count > HEARTBEAT_PERIOD )
{
loop_count = 0; // Reset the loop counter
}
CyDelay( WAIT_DEBOUNCE_MS ); // Let the motors run for a while to prevent "jitter"
}
}
/*
Function: motor
Sets the direction register, which swaps the PWM output signal to the H-bridge inputs.
Changes the motor PWM compare value to control the speed.
Only updates the PWM if something needs to change.
*/
void motor( int left, int right )
{
static int last_left = SPEED_ILLEGAL; // Remember the previous speeds
static int last_right = SPEED_ILLEGAL;
/* Pack the directions into a 2-bit register */
int dir = ( right >= 0 );
dir <<= 1;
dir |= ( left >= 0 );
Reg_Direction_Write( dir ); // Set the direction (control the OR gates)
if( left != last_left )
PWM_Motor_WriteCompare1( abs( left ) ); // Left motor speed
if( right != last_right )
PWM_Motor_WriteCompare2( abs( right ) ); // Right motor speed
last_left = left; // Remember for next call
last_right = right;
}
ALL CONTENT AND MATERIALS ON THIS SITE ARE PROVIDED "AS IS". CYPRESS SEMICONDUCTOR AND ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THESE MATERIALS FOR ANY PURPOSE AND DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THESE MATERIALS, INCLUDING BUT NOT LIMITED TO, ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHT. NO LICENSE, EITHER EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, IS GRANTED BY CYPRESS SEMICONDUCTOR. USE OF THE INFORMATION ON THIS SITE MAY REQUIRE A LICENSE FROM A THIRD PARTY, OR A LICENSE FROM CYPRESS SEMICONDUCTOR.
Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms and Conditions of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms and Conditions of this site. Cypress Semiconductor and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.
Comments
You coding skills are very much above professional level i must say. I have worked with professionals before as an internee at Write my Paper | essayperks company but your code writing skills are just beyond theirs.
I feel a ton more secure at this point. With Embedded World only a couple of days away I am more averse to explode my demo! How about we add some mobility to this dog. I can go ahead, left and right, Video Production Services yet I can't turn around or turn on the spot. Genuine puppies are really great at that. I should have the capacity to switch the PWM yields to the AIN and BIN pins. I am will do that by utilizing a control enlist.
There are many ways to do this. The ideal way is to track activity if Barc is alone, entering a deep sleep state and waking up periodically to check for approaching events dissertation store. Your coding skills are much higher than the professional level, I must say. I worked with professionals.
Excellent timing this is just what I necessity for a UK Essay Writing Help project I'm functioning on. But I didn't know there was a library when I did it, and even though it works fine, for some reason its way less accurate than this... I wonder how it was executed. Many thanks.
Well, it was a hard topic for me, until I read your blog, I express my gratitude for this valuable knowledge 192.168.0.1
You did really good work. I really appreciate your new and different post. Please guys keep it up and share with us some unique post in the future… Rules of Survival PC
I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. I hope to have many more entries or so from you. Run 3
Alpha writing services provide you the best in class, plagiarism free and value for money blog at your convenient time from expert Writers. custom writing, best custom writing, custom writings, Blog writing service, blog writing services, best blog writing services, Content writing services, content writing service, website content writing services, Article writing service, article writing services, seo article writing service, academic research paper, academic writing help, academic assignment, Creative writing services, cheap creative writing service, best creative writing service, Ghostwriting services, ghost writing service, ghost writing services, Professional proofreading services, proofreading and editing services, professional proofreading service, Book editing services, editing service, essay editing service, Copywriting services, seo copywriting services, copywriting service, Resume writing services, Professional resume writing service
Antivirus Support -Contact for assistance on Antivirus, Internet Security, and security software. Make your computer secure and virus free. antivirus support number, antivirus support phone number, antivirus tech support number, norton.com setup, norton support, norton customer service, help norton.com, norton phone number, norton antivirus phone number, mcafee support, mcafee customer service, mcafee phone number, mcafee phone support, trend micro phone number, trend micro support number, trend micro contact, avast customer service, avast support, avast phone number, avast antivirus tech support phone number, avast help, AVG phone number, AVG contact number, AVG support phone number, Bitdefender phone number, Bitdefender customer service phone number, Kaspersky phone number, Kaspersky support number, Kaspersky contact number, Kaspersky contact, Kaspersky technical support phone number, webroot phone number, webroot contact, webroot support number, contact webroot, webroot technical support phone number, norton renewal, norton 360 renewal, norton 360 deals, norton discount code, buy norton 360, norton 360 sale, mcafee subscription, mcafee renewal, mcafee discount, mcafee price, mcafee auto renewal, mcafee cost, mcafee subscription cost, get avast, avast discount, avast price, avast cost, avast subscription, avast renewal, avast deals, bitdefender discount coupon, bitdefender discount, bitdefender sale, bitdefender deals, buy bitdefender, bitdefender price, buy bitdefender total security 2015, trend micro best buy, trend micro renewal, best buy trend micro, renew trend micro, trend micro discount, best buy webroot, webroot best buy, webroot renewal, webroot discount, webroot deals, webroot sale,
Apple Support Phone Number is here to help. Contact Apple Support Number by phone for iPhone, iPad, Mac, and more. Call +18338005666 apple support, apple support number, apple phone number, apple number, apple support phone number, apple support chat, apple tech support, apple tech support number, apple technical support, apple tech support phone number, apple technical support phone number, apple customer service, apple customer service number, apple customer support, apple customer service phone number, apple id support number, apple id support phone number, create apple id, forgot apple id password, reset apple id, forgot apple id, itunes support, itunes customer service, itunes customer service number, apple itunes support, itunes support number, itunes phone number, contact itunes, iphone help, apple iphone support, apple iphone support number, iphone 6 help, iphone customer service, iphone support, iphone support number, apple iphone customer service, mac support, mac help, sync contacts from iphone to mac, how to import contacts from iphone to mac, mac support number, mac customer service, iPad help, iPad support, apple iPad support, how to sync contacts from iPhone to iPad, apple iPad help, how to transfer contacts from iPhone to iPad, macbook support, macbook technical support, macbook tech support, macbook support phone number, macbook support number, macbook service, macintosh support, macintosh help, macintosh services, macintosh tech support, macintosh service, macintosh customer service, apple help, apple help number, apple help desk, apple helpline, apple help line, apple help chat, apple help phone number, apple helpline number, safari help, safari support, apple safari support, safari tech support, safari technical support phone number, apple safari help, safari helpline, safari customer service, safari windows support, icloud support, icloud help, set up icloud, icloud setup
Microsoft Support is here to help. Contact Microsoft Support by phone for technical support on all Microsoft products and software. Call +1-855-999-4211 microsoft support, microsoft support number, call Microsoft, contact Microsoft, contact microsoft support, microsoft support chat, windows support number, windows tech support, windows activation, windows help, microsoft windows support, windows technical support, outlook support, outlook support number, outlook support phone number, microsoft outlook support, microsoft outlook support number, Microsoft office phone support, microsoft office support number, microsoft office phone number, microsoft office support phone number, microsoft customer service, microsoft customer service number, microsoft customer service phone number, microsoft customer support, microsoft customer support number, microsoft phone number, microsoft phone, microsoft phone support, how to contact Microsoft, phone number for Microsoft, contact microsoft by phone, microsoft help, microsoft help desk, microsoft help number, microsoft help phone number, microsoft help chat, microsoft help line, microsoft tech support, microsoft tech support number, microsoft tech support phone number, microsoft technical support, microsoft technical support phone number, microsoft contact, microsoft contact number, microsoft contact us, microsoft contact email, microsoft contact info, microsoft number, microsoft chat support, microsofts number, microsoft email support, what is microsofts number, microsoft activation phone number, microsoft account help, microsoft account support, microsoft billing phone number, microsoft telephone number, microsoft 800 number, microsoft telephone support, microsoft toll free number, buy microsoft outlook, buy microsoft outlook 2010, buy outlook, buy outlook 2010, buy outlook for mac, import gmail contacts to outlook, import outlook contacts, import outlook contacts to gmail, import outlook contacts to icloud, outlook help, outlook help desk, outlook help number, outlook email help, outlook mail help, microsoft outlook 2010 help, setup outlook, setup outlook 2013, setup outlook 2013 for gmail, setup outlook for gmail, setup outlook for office 365, office 365 outlook setup, office 365 setup outlook, outlook 2007 export contacts, outlook 2010 contacts, outlook 2010 contacts file, outlook 2010 export contacts, export gmail contacts to outlook, export iphone contacts to outlook, export outlook 2007 contacts, export outlook 2010 contacts, sync gmail contacts with outlook, sync google contacts with outlook, sync google contacts with outlook 2013, sync outlook contacts with gmail, outlook customer service, outlook customer service number, outlook customer support, outlook customer support phone number, microsoft outlook tech support, microsoft outlook tech support phone number, microsoft outlook technical support phone number
Call Quickbooks Support Phone Number and get the quickest answers by QuickBooks experts. Contact Quickbooks support by phone, call +18559999877. quickbooks support, quickbooks support number, quickbooks support phone number, quickbook support, contact quickbooks, intuit quickbooks support, support quickbooks intuit, intuit quickbooks support number, intuit quickbooks support phone number, quickbooks customer service, quickbooks customer service phone number, quickbooks customer support, quickbooks customer support phone number, quickbooks help, quickbooks help phone, quickbooks help phone number, quickbooks help desk number, quickbooks payroll support, quickbooks payroll help, quickbooks payroll service, quickbooks payroll services, quickbooks payroll support number, quickbooks technical support, quickbooks tech support, quickbooks tech support number, quickbooks tech support phone number, quickbooks contact, quickbooks phone number, quickbooks phone support, quickbooks contact number, quickbooks contact phone number, quickbooks contact us, quickbooks online help, quickbooks online support, quickbooks online support phone number, quickbooks online phone number, quickbooks online customer service, quickbooks enterprise support, quickbooks pro help, quickbooks pro support, quickbooks pro support phone number, quickbooks proadvisor support, quickbook license, quickbooks license, quickbooks license number, quickbooks licenses, quickbooks multi user license cost of quickbooks, cost of quickbooks online, quickbooks cost, how much does quickbooks cost, how to setup quickbooks, quickbooks email setup, quickbooks setup, quickbooks upgrade, quickbooks cheap, quickbooks checks discount code, quickbooks discount, quickbooks discount code, quickbooks for sale, quickbooks sale, quickbooks price, quickbooks price levels, quickbooks prices, quickbooks pricing
Call Quicken Support Phone Number and get the quickest answers from Quicken experts. Contact Quicken support by phone, call +1-855-999-9877. call quicken, call quicken support, contact quicken, contact quicken support, contact quicken support by phone, intuit quicken support, intuit quicken support phone number quicken help, quicken help chat, quicken help desk, quicken help line, quicken help number, quicken help phone, quicken help phone number, call quicken customer support, intuit quicken customer service phone number, intuit quicken customer support phone number, quicken customer service, quicken tech support, quicken tech support number, quicken tech support phone number, quicken tech support telephone number, quicken technical support, quicken bill pay phone number, quicken bill pay service, quicken bill pay support, quicken bill pay support phone number ,quicken bill pay customer service, contact quicken by phone, how to contact quicken by phone, intuit quicken phone number, quicken 800 number, quicken contact, quicken contact number, quicken online backup customer service, quicken online backup support, quicken online chat support, quicken online help, buy quicken, quicken discount, quicken rates, quicken sale, quicken upgrade
A Wide range of Feed Supplements to ensure healthy growth of livestock and increase in productivity. Feel free to call for a consultation. poultry feed, broiler feed, broiler feed formulation, hen feed, poultry feed formulation, poultry feed ingredients, poultry farming business plan, list of poultry feed manufacturers in india, poultry farm management, poultry feed manufacturers, poultry feed manufacturers in india, poultry management, broiler chicken feed, food for chicks, chicken supplies, all natural chicken feed, best chick starter feed, best chicken feed mix, chelated minerals, poultry mineral supplement, poultry trace mineral, Poultry Liver supplement, Liver supplement for poultry, toxin binder for poultry, toxin binder for poultry feed, toxin binder poultry feed, fungal diseases in poultry, fungal diseases of poultry, fungal infection in chickens, chicken fungal infection chicken antibiotics for respiratory infections, broiler chicken weight gain, broiler weight gain medicine, broiler weight gain tips, heat stress in poultry, heat stress management in poultry, chicken heat stress, chicken heat stroke, chicken heat stroke symptoms, chicken feed, food for chickens, best feed for chickens, best chicken feed, best chicken feed for egg layers, best chicken feed for eggs, acidified copper sulfate for chickens, acidified copper sulfate poultry, copper sulfate for chickens best vitamins for chickens, calcium for chickens, calcium supplements for chickens, chicken calcium supplement, dog supplements, pet products, best dog vitamins, best joint supplement for dogs, dog multivitamin, dog vitamins, joint supplements for dogs, cattle feed, animal feed, animal feed manufacturers, animal feed supplement, animal supplements, best cattle feed formula, Pig Feed Formula, Pig Feed Price, Pig Feeding Guide, Pig Food price, Pig Food for sale, Pig supplements, Goat Feed, Goat Feed Formula, Goat Food, Goat Food Price, Goat Food for sale
Call support number for technical support on all computer issues. Get instant resolution for all technical concerns via phone. Contact +1-855-999-4377 charter customer service, charter phone number, mac support, mac help, mac support number, mac customer service, verizon customer service, verizon phone number, verizon customer service number, belkin setup, belkin router setup, belkin support, belkin customer service, belkin range setup, dropbox help, dropbox support, contact dropbox, how to set up dropbox, dropbox support number, dlink support, d-link support, dlink router setup, d-link router setup, dlink camera setup, dlink setup, avast customer service, avast support, avast phone number, avast antivirus tech support phone number, avast help, canon support, canon customer service, canon printer support, canon tech support, canon ij setup, chrome help, google chrome help, google chrome setup, chrome setup, chrome support, google chrome support, chrome java support, lenovo support, lenovo customer service, lenovo tech support, lenovo support number, lenovo customer support, lenovo technical support, outlook support phone number, outlook technical support phone number, outlook customer service number, outlook support number, aol phone number, aol contact number, aol customer service phone number, aol customer service number, aol telephone number, hewlett packard support, hewlett packard phone number, hewlett packard customer service phone number, hewlett packard tech support, hewlett packard technical support, asus support, asus customer service, asus tech support, asus laptop support, asus support number, trend micro best buy, trend micro renewal, best buy trend micro, renew trend micro, trend micro discount, norton 360 sale, buy norton antivirus, norton annual renewal, norton antivirus renewal, norton antivirus deals, buy Norton, norton sales, kaspersky renewal, best buy Kaspersky, kaspersky deals, kaspersky best buy, kaspersky discount, buy Kaspersky, bitdefender discount coupon, bitdefender discount, bitdefender sale, bitdefender deals, buy bitdefender, bitdefender price, toshiba support, toshiba customer service, toshiba laptop support, toshiba tech support, support Toshiba, toshiba service station, Epson customer service phone number, Epson printer technical support phone number, Epson printer customer support phone number, Epson phone number, adobe support, adobe customer support, adobe contact, contact adobe, adobe phone number, adobe tech support, adobe support phone number, nuance support, dragon naturally speaking support, call dragon, nuance customer service, dragon support, nuance dragon support, nuance customer support, mcafee support, mcafee customer service, mcafee phone number, mcafee phone support, mcafee support number, norton support, norton customer service, norton phone number, norton antivirus phone number, norton 360 support, microsoft phone number, microsoft number, microsoft support number, microsoft customer service number, contact microsoft, yahoo mail customer service number, yahoo mail customer service phone number, yahoo mail phone number, hotmail support, hotmail customer service, hotmail help, hotmail phone number, contact Hotmail, gmail help, gmail customer service, gmail support, gmail phone number, cisco support number, cisco contact center, cisco phone number, cisco tech support number, linksys support, linksys customer support, linksys tech support, linksys customer service, linksys support number, netgear support number, netgear phone number, netgear contact number, netgear number, netgear support phone number, hp support, hp printer support, hp support assistant, hp tech support, hp support number, hp customer service number, dell support, dell customer service, dell tech support, dell support chat, dell support phone number, dell support drivers, dell customer service number, dell customer support