30  Kit Selection Guide

30.1 Learning Objectives

By the end of this chapter, you will be able to:

  • Apply Selection Criteria: Systematically evaluate and score prototyping kits against application domain, skill level, budget, and connectivity needs
  • Mitigate Vendor Lock-In: Implement standard protocols and hardware abstraction layers to preserve platform portability
  • Plan Production Transitions: Map the pathway from kit-based prototype to custom PCB manufacturing with realistic cost and timeline estimates
  • Calculate Total Cost of Ownership: Quantify complete project costs including hardware, shipping, tools, cloud subscriptions, and engineering time
  • Follow Best Practices: Execute proven strategies for documentation, incremental development, community engagement, and iterative validation

30.2 Prerequisites

Before diving into this chapter, you should be familiar with:

30.3 Introduction

Selecting the right prototyping kit requires balancing multiple factors: application requirements, budget constraints, skill level, connectivity needs, and long-term scalability. This chapter provides frameworks and best practices for making informed kit selection decisions and avoiding common pitfalls.

Choosing the wrong kit wastes time and money: - Too simple: Outgrow it quickly, must restart with new platform - Too complex: Spend weeks learning instead of building - Wrong connectivity: Wi-Fi kit for a cellular application - Vendor lock-in: Proprietary cloud, can’t migrate later

Good selection matches kit capabilities to your specific project, skill level, and future plans. The cheapest kit isn’t always the best value, and the most powerful kit isn’t always the right choice.

“Choosing the right kit is like choosing the right backpack for a trip,” said Max the Microcontroller. “Too small, and you cannot fit everything. Too big, and you waste money carrying extra weight. You need to match the kit to your project.”

Sammy the Sensor had made mistakes before. “I once bought an expensive industrial kit for a simple school project. It was way too complex and I spent weeks just learning the tools instead of building!” Max nodded. “That is why you ask yourself these questions first: What is my application? What wireless range do I need? What is my budget? What is my skill level? And will I need to scale up to production later?”

Lila the LED warned about vendor lock-in. “Some kits only work with one specific cloud service. If that company raises prices or shuts down, you are stuck. Always check if the kit uses standard protocols so you can switch later.” Bella the Battery added the cost perspective. “And do not just look at the kit price. Factor in extra sensors, cables, tools, shipping, and cloud service subscriptions. The total cost of ownership is often two to three times the kit price!”

30.4 Selection Criteria

30.4.1 Choosing the Right Kit

Application Domain:

  • Smart home → SmartThings, Philips Hue
  • Environmental → Feather, FarmBeats
  • Robotics → TurtleBot, mBot, Romeo
  • Industrial → IOT2050, Arduino Opta
  • AI/Vision → Jetson Nano, OpenMV
  • Wearable → LilyPad, Maxim Health

Skill Level:

  • Beginner → mBot, LilyPad, Adafruit kits
  • Intermediate → Arduino kits, Particle
  • Advanced → TurtleBot, Jetson, IOT2050

Budget:

  • <$100: mBot, OpenMV, Arduino kits
  • $100-$500: Most specialized kits
  • $500: TurtleBot, IOT2050, industrial

Connectivity Needs:

  • Local: Bluetooth, Wi-Fi kits
  • Long-range: LoRa, cellular
  • Mesh: XBee, Zigbee
  • Cloud: Particle, SmartThings

Power Requirements:

  • Mains-powered: Industrial kits
  • Battery: Most consumer kits
  • Energy harvesting: EnOcean, SparkFun

Scalability:

  • Prototype only: Educational kits
  • Prototype to production: Particle, industrial
  • Production-ready: Siemens, professional platforms

30.4.2 Kit Selection Decision Guide

Prototyping kit selection decision tree flowchart starting with experience level assessment. Beginners directed to Arduino Starter Kit (teal, easy and well-documented). Intermediate users proceed to application type decision with four branches: Wi-Fi/BLE leading to ESP32 Dev Kit (teal, built-in connectivity), LoRa/LPWAN leading to LoRa Development Kit (long range, low power), Cellular leading to Cellular IoT Kit (SIM800/7000 modules), and Industrial leading to Industrial IoT Kit (Modbus, RS485, rugged). Advanced users directed to Custom PCB Design for maximum control. All paths converge at budget decision point with three outcomes: under $50 leads to Starter kits with basic sensors, $50-200 range leads to Professional kits with full sensor suite, over $200 leads to Enterprise kits (orange, production-grade). Flowchart guides users through systematic evaluation of experience, application needs, and budget to optimal kit recommendation.

Prototyping kit selection decision tree flowchart starting with experience level assessment. Beginners directed to Arduino Starter Kit (teal, easy and well-documented). Intermediate users proceed to application type decision with four branches: Wi-Fi/BLE leading to ESP32 Dev Kit (teal, built-in connectivity), LoRa/LPWAN leading to LoRa Development Kit (long range, low power), Cellular leading to Cellular IoT Kit (SIM800/7000 modules), and Industrial leading to Industrial IoT Kit (Modbus, RS485, rugged). Advanced users directed to Custom PCB Design for maximum control. All paths converge at budget decision point with three outcomes: under $50 leads to Starter kits with basic sensors, $50-200 range leads to Professional kits with full sensor suite, over $200 leads to Enterprise kits (orange, production-grade). Flowchart guides users through systematic evaluation of experience, application needs, and budget to optimal kit recommendation.
Figure 30.1: Prototyping kit selection decision flowchart guiding users from budget and skill level through application domain, connectivity requirements, and power considerations to arrive at optimal kit recommendations for their specific IoT project needs.

This decision guide helps systematically evaluate kit options based on project constraints and requirements, ensuring selection of platforms that match both technical needs and budget limitations.

30.5 Best Practices

30.5.1 Starting with Specialized Kits

Read Documentation First: Understand kit capabilities and limitations before purchase.

Start with Examples: Work through provided examples to understand platform.

Join Community: Leverage forums and user groups for support.

Experiment Incrementally: Build complexity gradually, testing each component.

Document Your Work: Keep notes on configurations, issues, and solutions.

30.5.2 Avoiding Vendor Lock-In

Use Standard Protocols: Prefer kits supporting industry standards (MQTT, HTTP, Modbus).

Open Source Options: Choose platforms with open hardware/software when possible.

Data Portability: Ensure you can export data from proprietary clouds.

Abstraction Layers: Build abstraction to ease platform migration if needed.

Vendor Lock-In Warning Signs

Be cautious of kits that: - Require proprietary cloud with no data export - Use non-standard communication protocols - Have no open-source alternative libraries - Charge ongoing subscription fees with no alternatives - Discontinue products without migration path

Mitigation: Use MQTT/HTTP for cloud communication, store data in standard formats, maintain abstraction layers in code.

30.5.3 Transitioning to Production

Evaluate Production Variants: Many kits have production-grade equivalents.

Custom PCB Integration: Extract learnings from kit to inform custom design.

Component Selection: Identify individual components for BOM.

Certification Planning: Consider regulatory requirements early.

Manufacturing Partners: Connect with manufacturers supporting kit ecosystem.

30.5.4 Production Transition Checklist

Phase Tasks Timeline
Validation Confirm kit meets requirements Week 1-2
Prototype Build functional prototype Week 3-6
Integration Test all components together Week 7-8
BOM Analysis Identify production components Week 9-10
PCB Design Design custom board Week 11-18
Certification Regulatory submissions Week 19-30
Manufacturing Production setup Week 31-40

30.6 Kit Selection and Evaluation Framework

A kit selection framework helps evaluate and compare specialized IoT prototyping kits based on application requirements, budget, and learning objectives. Key concepts include:

Kit Categories: Smart home (home automation, security), environmental monitoring (weather, air quality), robotics (mobile robots, drones), industrial IoT (sensors, PLCs), wearables (fitness, health), agriculture (soil, irrigation), energy management (solar, battery), smart city (traffic, parking), and educational kits.

Component Inventory: Track included sensors, actuators, microcontrollers, communication modules, power supplies, cables, and documentation quality.

Requirements Matching: Filter kits by application domain, required sensors, connectivity options (Wi-Fi, Bluetooth, LoRa, cellular), programming language support, and price range.

Learning Curve Assessment: Evaluate documentation quality, tutorial availability, community support, and prerequisite knowledge (beginner, intermediate, advanced).

Cost Analysis: Compare upfront kit cost, expansion module costs, replacement component availability, and total cost of ownership.

Vendor Comparison: Track kit manufacturers, regional availability, shipping costs, warranty terms, and customer support quality.

30.6.1 Multi-Criteria Evaluation

Score kits across 5 dimensions:

  1. Price score (25% weight): Cost relative to budget
  2. Feature score (30% weight): Category, connectivity, production path, special features
  3. Ease of use (20% weight): Skill level match, language support
  4. Community score (15% weight): Documentation quality + community size
  5. Power efficiency (10% weight): Power consumption vs. budget

30.6.1.1 Interactive Kit Scoring Calculator

30.6.2 Cost Analysis Framework

Complete project cost estimation includes:

Cost Category Typical Range Notes
Kit Purchase $50-500 Base development kit
Additional Components 20% of kit cost Sensors, cables, enclosures
Shipping $10-50 International varies
Tools $50-200 Soldering, multimeter
Cloud Services $0-50/month Tiered pricing
Total Initial $150-800 One-time costs
Monthly Recurring $0-50 Cloud, cellular data

Total Cost of Ownership (TCO) Comparison: For a 100-device smart agriculture deployment over 3 years:

Kit-based prototyping approach: \[\text{TCO}_{\text{kit}} = 5 \times \$300 + (100 \times \$45) + (36 \times \$30) = \$6,580\] (5 dev kits, 100 production units at $45 each, 3 years cloud service)

Custom hardware approach: \[\text{TCO}_{\text{custom}} = \$5,000 + (100 \times \$32) + (36 \times \$30) = \$9,280\] ($5,000 design costs, 100 units at $32 each, same cloud service)

Break-even point: Kit approach saves $2,700 for deployments under 350 devices. Above 350 units, custom hardware becomes more cost-effective due to lower per-unit manufacturing costs.

30.6.2.1 Interactive TCO Calculator

30.6.3 Development Path Planning

Five-phase planning from learning to production:

  1. Phase 1: Learning and Setup (1 week, $50) - Documentation review, environment setup
  2. Phase 2: Proof of Concept (4 weeks, kit + $100) - Basic functionality demonstration
  3. Phase 3: System Integration (3 weeks, $200) - Full feature implementation
  4. Phase 4: Testing and Refinement (2 weeks, $100) - Bug fixes, optimization
  5. Phase 5: Production Preparation (8 weeks, $5,000) - Custom PCB, certifications (if applicable)

30.7 Knowledge Check

30.8 Key Concepts Summary

Kit Categories:

  • Smart Home: Automation, security, comfort
  • Industrial IoT: Monitoring, control, predictive maintenance
  • Robotics: Mobile platforms, manipulation, sensing
  • Environmental: Weather, air quality, soil monitoring
  • Wearables: Health, activity, biometric tracking
  • AI/ML: Edge inference, computer vision, audio processing

Selection Criteria:

  • Skill level: Beginner vs. advanced
  • Application domain: Specific use case fit
  • Connectivity: Wi-Fi, Bluetooth, cellular, LoRa
  • Sensors: Matching measurement requirements
  • Actuators: Motor, relay, LED control
  • Extensibility: Add custom components
  • Support: Documentation, community
  • Cost: Initial kit, expansion, per-unit production

Evaluation Methods:

  • Feature comparison matrix
  • Cost analysis (kit, expanded, production)
  • Development timeline estimation
  • Scalability assessment
  • Learning curve evaluation

Development Path:

  • Phase 1: Proof of concept with kit
  • Phase 2: Feature development and testing
  • Phase 3: System integration and optimization
  • Phase 4: Scaling to production

30.8.1 Development Board Features Taxonomy

Mind map diagram radiating from central 'Dev Board Features' node with six main branches. Processor branch lists ARM Cortex-M, Xtensa ESP32, AVR 8-bit, and RISC-V architectures. Connectivity branch shows Wi-Fi 2.4/5GHz, Bluetooth 4.2/5.0, LoRa/LoRaWAN, Cellular 4G/5G, and Ethernet options. Peripherals branch includes GPIO pins, ADC/DAC, I2C/SPI/UART protocols, PWM, and USB. Power branch covers USB powered, battery support, low-power modes, and solar charging capabilities. Memory branch lists Flash storage from 256KB to 16MB, RAM from 32KB to 8MB, and external SD card support. Form Factor branch describes breadboard friendly, shield compatible, compact module, and ruggedized physical designs. Each branch provides comprehensive feature categories for evaluating IoT development boards.

Mind map diagram
Figure 30.2: Development board features taxonomy showing six critical evaluation dimensions: processing capabilities (CPU architecture, speed, cores, memory, GPU/AI acceleration), connectivity options (local wireless, wide-area networks, wired interfaces, serial protocols), input/output features (digital GPIO, analog ADC, PWM, special functions), power management (voltage levels, consumption, sleep modes, power sources), software ecosystem (programming languages, frameworks, IDE support, libraries), and physical characteristics (form factor, size, mounting options, environmental durability).

This taxonomy provides a comprehensive framework for evaluating and comparing development boards across multiple dimensions, enabling informed selection based on project-specific requirements and constraints.

30.9 Comprehensive Review Quiz

Scenario: A startup is developing a DIY smart home security system with 10 sensors (door/window sensors, motion detectors) communicating with a central hub. They’re evaluating two approaches: (1) SmartThings Development Kit or (2) Custom ESP32-based solution. Calculate the 3-year total cost of ownership for 100 customer deployments.

Option 1: SmartThings Development Kit

Hardware costs per deployment: | Component | Quantity | Unit Price | Total | |———–|———-|————|——-| | SmartThings Hub | 1 | $70 | $70 | | SmartThings Multipurpose Sensors | 8 | $20 | $160 | | SmartThings Motion Sensors | 2 | $25 | $50 | | Hardware subtotal | | | $280 |

Development costs (one-time): - SmartThings app development (Groovy SmartApps): 80 hours × $100/hr = $8,000 - Mobile app (iOS/Android): 200 hours × $100/hr = $20,000 - Testing and debugging: 40 hours × $100/hr = $4,000 - Development total: $32,000

Operational costs per deployment per year:

  • SmartThings cloud service: $0 (free for consumers, Samsung-hosted)
  • Customer support (5% of customers contact support, 30 min average): 0.05 × 100 × 0.5 hr × $50/hr = $125/year total
  • Operational per deployment: $1.25/year

3-year total cost of ownership (100 deployments): - Hardware: $280 × 100 = $28,000 - Development: $32,000 (one-time) - Operations: $1.25 × 100 × 3 years = $375 - Total: $60,375 for 100 deployments

Option 2: Custom ESP32 Solution

Hardware costs per deployment: | Component | Quantity | Unit Price | Total | |———–|———-|————|——-| | Raspberry Pi 4 (hub) | 1 | $55 | $55 | | ESP32-C3 dev boards | 10 | $6 | $60 | | Reed switches (door/window) | 8 | $1 | $8 | | PIR motion sensors | 2 | $3 | $6 | | Batteries (CR2032) | 10 | $0.50 | $5 | | Enclosures | 10 | $2 | $20 | | Hardware subtotal | | | $154 |

Development costs (one-time): - ESP32 firmware (C++ with ESP-IDF): 120 hours × $100/hr = $12,000 - Raspberry Pi hub software (Python, MQTT broker): 80 hours × $100/hr = $8,000 - Mobile app (iOS/Android): 200 hours × $100/hr = $20,000 - Custom PCB design (after prototyping): 60 hours × $100/hr = $6,000 - PCB fabrication and assembly setup: $3,000 - Testing and certification (FCC/CE): $15,000 - Development total: $64,000

Operational costs per deployment per year:

  • Cloud hosting (AWS IoT Core): $2/month × 12 = $24/year
  • Firmware OTA updates: $1/year
  • Customer support (10% need help, custom solution): 0.10 × 100 × 1 hr × $50/hr = $500/year total = $5/deployment/year
  • Operational per deployment: $30/year

3-year total cost of ownership (100 deployments): - Hardware: $154 × 100 = $15,400 - Development: $64,000 (one-time) - Operations: $30 × 100 × 3 years = $9,000 - Total: $88,400 for 100 deployments

Comparison Summary:

Factor SmartThings Kit Custom ESP32 Winner
Hardware per deployment $280 $154 Custom (45% cheaper)
Development cost $32,000 $64,000 SmartThings (50% cheaper)
Operations (3 years) $375 $9,000 SmartThings (24x cheaper)
Total (100 units, 3 years) $60,375 $88,400 SmartThings (32% cheaper)

Break-even analysis: At what scale does custom become cheaper?

Custom becomes cheaper when hardware savings (100 × $126 = $12,600 per 100 units) exceed development cost difference ($64K - $32K = $32K).

Break-even point: $32,000 / $126 = 254 deployments

Key insights:

  1. For <250 deployments, SmartThings kit wins due to lower development and operational costs
  2. For >250 deployments, custom solution wins due to hardware cost savings
  3. Operational costs (cloud hosting, support) often overlooked but significant for custom solutions
  4. Development time not shown: SmartThings is 4-6 months faster to market (using existing ecosystem)

Decision: For a startup’s MVP and first 100 customers, SmartThings kit provides faster time-to-market, lower upfront investment, and lower operational burden. Transition to custom hardware after validating product-market fit at 250+ customers.

Factor Pre-Integrated Kit (e.g., Seeed Studio, Adafruit) DIY Component Assembly (Separate Breadboard Parts)
Time to first prototype 2-4 hours (plug and play) 2-4 days (sourcing, wiring, debugging)
Hardware debugging time Minimal (pre-tested compatibility) High (loose wires, wrong pinouts, component failures)
Learning curve Low (focus on application logic) High (learn hardware integration first)
Component compatibility Guaranteed (kit components tested together) Risk of incompatibility (voltage levels, protocols)
Cost 2-3x component cost (convenience premium) Lowest cost (bulk component prices)
Flexibility Limited to kit components Maximum flexibility (any component)
Documentation Comprehensive tutorials and examples Generic datasheets only
Failure risk Low (known working configuration) High (many integration points to fail)
Best for Beginners, rapid prototyping, education Experienced engineers, production optimization, custom requirements

Example comparison:

Beginner student project (temperature/humidity logger): - Kit option: Adafruit Feather + BME280 sensor wing ($30, 2 hours, works guaranteed) - DIY option: ESP32 dev board ($6) + BME280 breakout ($8) + breadboard ($3) + jumper wires ($2) = $19, but 1-2 days for beginners to debug wiring and I2C communication

Analysis: For beginners, the $11 premium for the kit saves 16-32 hours of frustration and guarantees success. The kit cost is trivial compared to time wasted debugging wiring issues.

Professional production development:

  • Kit option: Grove environmental kit ($150) with plug-and-play sensors for prototyping
  • DIY option: Custom PCB with bare BME280 IC ($2), optimized traces, production-ready

Analysis: Use the kit for proof-of-concept (1-2 weeks), then transition to custom PCB ($5,000 NRE) for production (saves $148 per unit at scale).

When to choose kits: Early prototyping, education, proof-of-concept, unfamiliar technology domains.

When to choose DIY: Production optimization, custom requirements, experienced team, cost-sensitive scaling.

Common Mistake: Vendor Lock-in Through Proprietary Cloud Services

The Problem: A company builds their entire IoT product around a kit’s proprietary cloud platform (e.g., Particle Cloud, Arduino IoT Cloud). The product is successful, but two years later the vendor: (a) raises prices 5x, (b) discontinues the service, or (c) gets acquired and shuts down. The company has 5,000 deployed devices that cannot function without the cloud, and no migration path.

Real-world examples:

  1. Nest/Works with Nest API shutdown (2019): Google discontinued the Works with Nest API, breaking thousands of third-party integrations. Companies had 1 year to migrate to Google Assistant platform or lose functionality entirely.

  2. SmartThings Classic → New App migration (2020): Samsung forced migration to a new SmartThings platform, breaking many custom SmartApps. Developers had to rewrite entire applications.

  3. Particle pricing change (2021): Particle increased data operation pricing, causing monthly costs to jump from $50/month to $500/month for some deployments. No warning, no grandfathering.

How it happens:

  • Rapid prototyping with kit’s cloud platform for ease of use
  • Tight coupling: device firmware hard-coded with vendor API endpoints
  • No abstraction layer between application logic and vendor API
  • Production devices deployed with no fallback mechanism

The fix (abstraction layer strategy):

Bad (vendor-locked firmware):

// Hard-coded to Particle Cloud
Particle.publish("temperature", String(temp));
Particle.variable("status", status);

Good (abstraction layer):

// config.h defines backend (Particle, AWS, self-hosted MQTT)
#ifdef USE_PARTICLE
  #include "backends/particle_backend.h"
#elif defined(USE_AWS)
  #include "backends/aws_backend.h"
#elif defined(USE_MQTT)
  #include "backends/mqtt_backend.h"
#endif

// Generic API in your firmware
iotPlatform.publishData("temperature", temp);
iotPlatform.registerVariable("status", &status);

// Backend implementation is swappable

Vendor lock-in prevention checklist:

  • ✅ Use standard protocols (MQTT, HTTP REST, CoAP) whenever possible
  • ✅ Build abstraction layer separating business logic from cloud API
  • ✅ Store credentials in device NVS/EEPROM, not compiled into firmware
  • ✅ Implement OTA updates so you can migrate devices to new backend
  • ✅ Test migration path during prototyping (simulate vendor shutdown)
  • ✅ Evaluate vendor financial stability (venture-backed startups vs established companies)
  • ✅ Include “kill switch” time limit in contracts (e.g., 5-year minimum service guarantee)

When vendor lock-in is acceptable:

  • Proof-of-concept (not production)
  • Hobby projects (no business risk)
  • Vendor is stable enterprise (AWS, Azure, Google) unlikely to shut down
  • Migration cost is budgeted ($50K-200K for firmware rewrite + testing)

Lesson: The “convenience” of a kit’s proprietary cloud becomes a liability at scale. Plan your exit strategy before you deploy device #1.

:

30.10 Summary

  • Kit selection requires systematic evaluation of application domain, skill level, budget, connectivity needs, power requirements, and scalability goals
  • Selection decision trees guide users from requirements through constraints to optimal kit recommendations, avoiding analysis paralysis
  • Best practices include reading documentation first, starting with examples, joining communities, experimenting incrementally, and documenting work
  • Vendor lock-in avoidance requires using standard protocols (MQTT, HTTP), choosing open-source options, ensuring data portability, and building abstraction layers
  • Production transition planning should consider production variants, custom PCB design, component BOM, certification requirements, and manufacturing partnerships
  • Cost analysis must include kit purchase, additional components, shipping, tools, cloud services, and ongoing operational costs for accurate project budgeting
  • Multi-criteria evaluation across price, features, ease of use, community support, and power efficiency enables objective kit comparison
In 60 Seconds

This chapter covers kit selection guide, explaining the core concepts, practical design decisions, and common pitfalls that IoT practitioners need to build effective, reliable connected systems.

30.11 Concept Relationships

Prerequisites: Specialized Prototyping Kits Overview - Kit ecosystem and categories. Smart Home and Environmental Kits - Specific kit examples for context. Prototyping Hardware - Hardware fundamentals for kit evaluation.

Related Concepts: AI, Wireless, and Energy Kits - Advanced kit categories. Industrial and Wearable Kits - Specialized domain kits. Robotics and Agricultural Kits - Application-specific platforms.

Builds Toward: Energy-Aware Considerations - Power optimization for kit-based prototypes. Testing and Validation - Quality assurance for kit projects. PCB Design and Fabrication - Custom hardware for production.

30.12 See Also

Kit Marketplaces: Adafruit Industries - Curated educational and maker kits with excellent documentation. SparkFun Electronics - Wide variety of development and sensor kits. Seeed Studio - Grove modular sensor ecosystem and kits. DFRobot - Educational robotics and IoT kits. Particle Store - Production-ready cellular IoT kits.

Selection Tools: Hackster.io Kit Finder - Curated kit recommendations by application. Arduino Product Selector - Official Arduino board comparison. Adafruit Product Search - Filter kits by features and price.

Cost Analysis: DigiKey BOM Tool - Component sourcing and TCO estimation. Octopart - Component price comparison across distributors. FindChips - Component availability and pricing search.

Vendor Lock-in Prevention: MQTT.org - Open standard for IoT messaging (vendor-neutral). Eclipse IoT - Open-source IoT frameworks and tools. Home Assistant - Open-source smart home platform supporting multiple protocols.

Community: Hackaday - DIY hardware projects and kit reviews. Reddit r/AskElectronics - Component and kit selection advice. Element14 Community - Engineering project discussions and tutorials.

30.13 What’s Next

If you want to… Read this
Start using the tools on a real project Microcontroller Programming Essentials
Learn best practices for managing projects Programming Best Practices
Explore professional debugging workflows Programming Paradigms and Tools