top of page

Search Results

81 items found for ""

  • Interfacing with MQ-3 Alcohol Sensor Module | TechKnowSkola

    Back Interfacing with MQ-3 Alcohol Sensor Module MQ-3 gas sensor has high sensitivity to alcohol, and has good resistance to disturbances of gasoline, smoke and vapor. The sensor could be used to detect alcohol with different concentration; it is with low cost and suitable for different application. Sensitive material of MQ-3 gas sensor is SnO2, which with lower conductivity in clean air. When the target alcohol gas exists, sensor’s conductivity is proportional to the gas concentration. Description: 1. Model No: MQ-3. 2. Heater voltage: 5±0.2V. 3. Loop voltage: ≤24V (DC) 4. Load resistance: Adjustable. 5. Heating Resistance: 31Ω±3Ω (Room temperature). 6. Heating Power: ≤ 900mW. 7. Surface thermal resistance: 2Kohm-20Kohm (0.4mg/L alcohol). 8. Sensitivity: Rs (in air)/Rs (0.4mg/L alcohol) ≥ 5. Application Example with Arduino Uno: Connect the MQ-3 alcohol sensor module to Arduino Uno board as shown below: Programming Code /* MQ-3 Alcohol Sensor Circuit with Arduino */ const int AOUTpin=A0; //the AOUT pin of the alcohol sensor goes into analog pin A0 of the arduino const int DOUTpin=8; //the DOUT pin of the alcohol sensor goes into digital pin D8 of the arduino const int ledPin=13; //the anode of the LED connects to digital pin D13 of the arduino int limit; int value; void setup() { Serial.begin(115200); pinMode(DOUTpin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { value= analogRead(AOUTpin); //reads the analaog value from the alcohol sensor's AOUT pin limit= digitalRead(DOUTpin); //reads the digital value from the alcohol sensor's DOUT pin Serial.print(" Alcohol value: "); Serial.println(value); //prints the alcohol value Serial.print("Limit: "); Serial.print(limit); //prints the limit reached as either LOW or HIGH (above or underneath) delay(100); if (limit == HIGH) { digitalWrite(ledPin, HIGH);//if limit has been reached, LED turns on as status indicator } else{ digitalWrite(ledPin, LOW); //if threshold not reached, LED remains off } } Result: Open up the Serial Monitor with Baud rate of 115200, the alcohol level detected will be shown as analog value. The alcohol limit value can be set with sensitivity potentiometer: if the alcohol level detected is below the set limit, the D0 green indicator will be off. If detected alcohol level is beyond the set limit, the DO LED will light up. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Our Services | TechKnowSkola - Empowering Education with STEAM & Robotics

    Our Services At TechKnowSkola, we distinguish ourselves by understanding the individual needs of our customers and tailoring our services accordingly. Our dedicated team of specialists is always ready to take on unique challenges and find the perfect solutions. With a focus on quality, competitive pricing, and unparalleled service, we are here to help you empower the next generation of learners and innovators. Choosing TechKnowSkola as a solution partner ensures that educational institutions receive a comprehensive and innovative approach to STEAM education. From customized solutions and continuous support to fostering inclusivity and a lifelong learning mindset, we are dedicated to empowering the next generation of leaders, thinkers, and creators in the world of Science, Technology, Engineering, Arts, and Mathematics. Comprehensive STEAM Solutions Aligned with NEP 2020 Experiential Learning & Project-Based Approach Expert Team of Educators and Mentors Customized Solutions for Diverse Institutions Proven Track Record of Success Curriculum & Project Guide Fostering the Innovators of Tomorrow Ultimately, TechKnowSkola stands as a trusted solution partner for educational institutions looking to create a cutting-edge STEAM ecosystem. Our commitment to excellence, alignment with NEP 2020, and focus on fostering future-ready students make us the ideal choice for institutions seeking to elevate their STEAM education offerings and prepare students for success in an increasingly technology-driven world. We TEACH How to ASK How t o LEARN How to EXPERIMENT Our Array of Services Includes: Atal Tinkering Lab AI & Robotics Lab Other Labs PM Shree Training & Support Smart Boards Planetarium Show Atal Tinkering Lab Atal Tinkering Lab: The Key to India’s Brighter Future With a vision to ‘Cultivate one Million children in India as Neoteric Innovators ’, Atal Innovation Mission is establishing Atal Tinkering Laboratories (ATLs) in schools across India. The objective of this scheme is to foster curiosity, creativity, and imagination in young minds; and inculcate skills such as design mindset, computational thinking, adaptive learning, physical computing, etc. TechKnowSkola is your go-to partner for creating a fully equipped, state-of-the-art Atal Tinkering Lab (ATL) at your educational institution 1 2 3 4 5 Training Support Documentation Support 6 Access to Digital Classroom 7 Discount of Consumables Items Warranty & AMC 8 Competition Support 24*7 Online Support 9 Curriculum & Project Guide Free Installation 10 Regular Visits T&C's Apply "Got queries or need assistance with your Atal Tinkering Lab? Fill out the form, we'll be delighted to help!" AI & Robotics Lab Ships Worldwide✈️ "Unleash Innovation with TechKnowSkola's AI & Robotics Lab!" TechKnowSkola's AI & Robotics Labs bring the excitement of hands-on learning straight into the classroom! Each lab is a gateway to digital, interactive guides covering various STEAM topics and essential tech skills. With captivating topics like coding, AI, robotics, and more, students explore the limitless possibilities of technology. Whether it's physical equipment or wifi-based labs, our immersive learning experiences empower students to unleash their creativity and innovation. Embrace the future of education with TechKnowSkola's AI & Robotics Labs, shaping bright minds for tomorrow's world. The journey of discovery begins here! What's Included 01 Coding & Programming 03 Artificial intelligence 02 Electronics & Internet of Things 04 Data Science & Machine Learning TechKnowSkola fosters creativity, innovation & learning in STEAM (Science, Technology, Engineering, Arts, Mathematics) education. Our AI & Robotics Lab, aligned with NEP 2020, cultivates 21st-century skills like critical thinking, collaboration, and problem-solving. Through hands-on experiences in AI, robotics, programming, and more, students become future-ready for a digital world. Join us to nurture the innovators of tomorrow! Why teachers will love it Ease of use Connection to curriculum Open the box and go! Step-by-step teacher guides included. Why students will love it too! Physical, tangible interactions Offline download of exercises Group activities Career Exploration We value your interest! Please take a moment to fill out the form below, and our team will be delighted to provide you with the assistance you need. STEAM Lab Empowering the Innovators of Tomorrow through STEAM Education Ships Worldwide✈️ At TechKnowSkola, we believe that the future belongs to those who can harness the power of Science, Technology, Engineering, Arts and Mathematics (STEAM). Our STEAM Lab is a dynamic space where young minds embark on a transformative journey of learning, creativity, and innovation. What to Expect in TechKnowSkola's STEAM Lab? Engaging Activities From building robots to coding programs, our STEAM Lab offers a wide range of engaging activities that spark curiosity and ignite a passion for learning. Cutting-Edge Tech Our STEAM Lab is equipped with state-of-the-art technology, including 3D printers, robotics kits, and more, providing students with a glimpse into the future. Project-Based Learning We believe in learning by doing. Students work on exciting projects that challenge their skills and encourage them to think critically. Inclusive Environment At TechKnowSkola, we prioritize safety and foster an inclusive environment where every student feels valued and encouraged to explore their interests. LEGO Lab ​ Building Dreams, One Brick at a Time: Discover Limitless Possibilities in the LEGO Lab! Grade 1 - 5 BricQ Motion Prime Grade 6 - 9 BricQ Motion Essential Grade 6 - 9 LEGO Education SPIKE Essential Grade 6 - 9 LEGO SPIKE Prime 3D Printing Lab Unlocking the Future: Where Imagination Takes Shape in Our 3D Printing Lab! At TechKnowSkola's 3D Printing Lab, we embrace the power of emerging technology - Additive Manufacturing. Experience the speed and versatility of 3D printing, revolutionizing industries from automotive and aerospace to defense and biomedical applications. Our lab aims to provide unparalleled exposure, enhancing knowledge and skills in this cutting-edge field. Join us to unlock a world of possibilities and become future-ready innovators in the realm of 3D printing. AR & VR Lab Embark on Immersive Adventures: Explore the Boundless Realms of AR & VR in Our Lab TechKnowSkola's AR & VR Lab offers an immersive journey into the realms of augmented and virtual reality, where students can explore cutting-edge technology, unleash their creativity, and develop future-ready skills. Through hands-on experiences, they delve into virtual simulations, collaborative projects, and interactive educational content, preparing them for a tech-driven world and inspiring real-world impact. Training & Support Discover TechKnowSkola's Unparalleled Training & Support For ATL's (Atal Tinkering Labs): For Others Lab: 📑 Documentation, 💼 PFMS & 🛒 GeM Support 📞 24/7 Telephonic Support 🎓 Onsite Teachers Training 📱 Hybrid Student Training 🎯 4 Activities/Month 🤝 Event Guidance 📚 Curriculum & Projects 💻 Digital Classroom Access 🗣️ 2 Virtual Feedback Meetings/Month 💰 Discounted Consumables & Spares 🏆 Competition Support 🔧 AMC Support 📚 Custom Curriculum 💻 Digital Classroom Access 🎓 Capacity Building Sessions 📞 24/7 Telephonic Support 🤝 Activity Guide 📝 Project Sheets 🌟 & Much More! Smart Board "TechKnowSkola IFP: Unleashing the Future of Interactive Learning! Experience the Next Level of Learning with our Interactive Flat Panel (IFP) featuring K-12 Digital Content and cutting-edge specs. Our Teknowskola IFP boasts an Android & win 11 OS with 4K resolution and multi-touch capabilities, providing a seamless and immersive learning experience. Key Features: ✍️ Zero Bonding: Enjoy an unmatched writing experience with smooth and lag-free interactions. 📺 4K Resolution: Crystal-clear UHD display with a resolution of 3840 * 2680, bringing content to life. 🚀 Android 11 OS: Powered by T982 | 4G+32G for fast and efficient performance. 🛡️ Warranty: Rest assured with a 3-year warranty for peace of mind. 🖐️ Multi-touch: Enjoy 40 points for Win 10/11 and 20 points for Android interactions. ⏳ Long Screen Life: With 50,000 hours of screen life, the IFP ensures enduring performance. 💻 Dual OS: Seamlessly switch between Windows 11 and Android as needed. Why Us? Built-in Digital Content: Access over 2 million learning resources, 50,000+ animated videos, 1 lakh+ questions, and 10,000+ interactive games, making learning engaging and comprehensive. Impeccable Writing Experience: Experience lag-free and natural writing, enhancing classroom interactions. No Ongoing Maintenance: After installation, the IFP requires no ongoing maintenance, ensuring hassle-free usage for over 10+ years. Powerful Pricing: Get these interactive flat panels at unbeatable prices, revolutionizing interactive learning for all." Specifications

  • Interfacing of Rain Drop Sensor with Arduino Uno. | TechKnowSkola

    Back Interfacing of Rain Drop Sensor with Arduino Uno. What is a Rain Drop Sensor? A raindrop sensor is a board on which nickel is coated in the form of lines. It works on the principle of resistance. The rain Sensor module allows the measurement of moisture via analog output pins and it provides a digital output when a threshold of moisture exceeds. The module is based on the LM393 op amp. It includes the electronics module and a printed circuit board that “collects” the rain drops. As raindrops are collected on the circuit board, they create paths of parallel resistance that are measured via the op amp. Material Required: Material Quantity Arduino Uno 1 Raindrop sensor 1 Jumper cables 4 Pinout Diagram: Circuit Diagram: Vcc +5 Volts Power Source GND Ground or negative power source A0 Analog Output – A0 Tested Programming Code: const int sensorMin = 0; const int sensorMax = 1024; void setup() { Serial.begin(9600); } void loop() { int sensorReading = analogRead(A0); int range = map(sensorReading, sensorMin, sensorMax, 0, 3); switch (range) { case 0: Serial.println("RAINING"); break; case 1: Serial.println("RAIN WARNING"); break; case 2: Serial.println("NOT RAINING"); break; } delay(1000); } Precautions: Double-check the connections before powering on the circuit. Don’t use loose jumper cables. Check whether the proper board is selected from Arduino IDE. Ensure proper placement of Rain drop Sensor for correct working. Don’t lose hope if Rain Drop Sensor does not run properly for the first time, try again. Conclusion: Once your sketch is running, you have to open your serial monitor. There you can see the Moisture or Rain on the Board. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • TechKnowSkola | The Technology School by Engineers & Innovators

    TechKnowSkola The Technology School By Engineers & Innovators We’re a team of professional engineers working hard to improve the way our communities run. At TechKnowSkola the technology school by engineers & innovators, We believe our decisions today shape future leaders, and that's why we always uphold high standards in our work. Incubated & Supported by DPIIT Recognised Available on GeM MSME Registered Recognized with a 4.5-star rating for outstanding services encompassing Atal Tinkering Lab, PM Shri Schools, and AI-Robotics Lab solutions Welcome to Techknowskola! We are dedicated to embracing technology and unlocking its full potential. Going beyond STEAM principles, we focus on 21st-century skills. Our integrated approach encourages a DIY mindset while mastering the 4Cs: Critical Thinking , Creativity , Collaboration , and Communication . Get ready to ignite curiosity, experiment, and create wonders! At Techknowskola , we create exciting, holistic, and student-centered learning environments. We believe this is crucial for your development and future success. Our goal is to equip you with relevant, in-demand skills for today's dynamic workforce, making you future innovators and potential job creators! Come and be a part of this incredible journey of exploration and growth! Together, let's dive into the world of technology and unlock your full potential! Our Story It all began with a group of people who dreamt of starting something completely new. We had a great vision, a passion for change, and all the right skills. Together, we established TechKnowSkola the technology school by engineers & innovators, a company dedicated to finding cutting-edge solutions and providing great services. Our Mission Empower every student for a brighter future through technology Hands-on Learning Active, practical experiences for meaningful understanding. DIY Approach Empowering students to explore, create, and excel for a fulfilling future. Innovative Problem-Solving Encouraging creative solutions through PBL & Design Thinking. Thinking-Based Learning Fostering critical thinking & curiosity for complex problems. Competency-Based Learning Personalized progress for comprehensive skills. Our Methods Our methodology involves engaging students in Science, Technology, Engineering, Arts, and Mathematics (STEAM) to foster well-rounded, critical thinkers and problem solvers OUR SERVICES Atal Tinkering Lab AI & Robotics Lab STEAM Lab LEGO Lab 3D Printing Lab Support on PM Shree Training & Support Know More LAB RESOURCES Know More Know More We offers diverse lab resources aligned with your educational institution's Lab setup, including curriculums, teaching materials, activity sheets, and more. ​ Know More GLOBAL REACH We support schools worldwide with affordable STEAM Labs. Our goal: Empower schools beyond India with modern, practical, and innovative education Know More TKS ACADEMY Where kids learn to build drones, robots, code, and more! Igniting creativity and innovation for the future. Join us today! Know More COURSES Empower yourself with affordable self-learning courses. Get ahead of the competition and achieve success on your own terms. Enroll now! Know More OUR TEAM Passionate tech enthusiasts and educators inspiring young minds in robotics, coding, and technology. Empowering the next generation of innovators for a bright future. Know More OUR WORK Our work in empowering young minds with STEM education and related initiatives. Know More EVENTS & COMPETITIONS Exciting events showcasing innovative robots in challenging tasks, inspiring STEAM enthusiasts worldwide. Know More Our Track Record Speaks for Itself 7500+ Schools 17500+ Teachers Trained 5 Lakh+ Students Impacted Our Guiding Philosophy At TechKnowSkola, we believe in the power of knowledge to transform lives. Our guiding philosophy revolves around three core principles: Accessibility | Innovation | Empowerment Aligned with

  • Interfacing of Sound sensor with Arduino Uno. | TechKnowSkola

    Back Interfacing of Sound sensor with Arduino Uno. What is a Sound Sensor? The Sound Sensor Module provides an easy way to detect sound and is generally used for detecting sound Intensity. This Module can be used Security, Switch and Monitoring applications. Its accuracy can be easily Adjusted for the convenience of the usage. It uses a Microphone which supplies the input to an amplifier, peak detector and buffer. When a Sensor detects a sound , it processes an output signal voltage which is sent to microprocessor , and performs further processing. Material Required: Material Quantity Arduino Uno 1 Sound Sensor 1 Jumper cables 5 Resistor 1(1k ohm) Pinout Diagram: Circuit Diagram: Parameter Value VCC 5 V DC from your Arduino Ground GND from your Arduino Out Connect to Digital Input Pin Tested Programming Code: //Arduino Sound Detection Sensor Module int soundDetectedPin = 10; // Use Pin 10 as our Input int soundDetectedVal = HIGH; // This is where we record our Sound Measurement boolean bAlarm = false; unsigned long lastSoundDetectTime; // Record the time that we measured a sound int soundAlarmTime = 500; // Number of milli seconds to keep the sound alarm high void setup () { Serial.begin(9600); pinMode (soundDetectedPin, INPUT) ; // input from the Sound Detection Module } void loop () { soundDetectedVal = digitalRead (soundDetectedPin) ; // read the sound alarm time if (soundDetectedVal == LOW) // If we hear a sound { lastSoundDetectTime = millis(); // record the time of the sound alarm // The following is so you don't scroll on the output screen if (!bAlarm){ Serial.println("LOUD, LOUD"); bAlarm = true; } } else { if( (millis()-lastSoundDetectTime) > soundAlarmTime && bAlarm){ Serial.println("quiet"); bAlarm = false; } } } Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of Sound Sensor for correctworking. 5. Don’t lose hope if Sound Sensor does not run properly for the first time, try again. Conclusion: Once your sketch is running, you will want to open your serial monitor. Make some loud noises and and view the results Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Free Resources | TechKnowSkola - Empowering Learning with Complimentary Educational Materials

    < Back Free Resources Disclaimer: Techknowskola respects intellectual property rights and does not intend to infringe on any copyrights. The resources shared here are either created by Techknowskola or sourced from reputable providers. Any views or opinions expressed in these resources are solely for educational and informational purposes and do not reflect the official stance of Techknowskola." ATL Guidelines and Important Information ATL Guidelines by AIM GeM PFMS Tranche-II & UC Document Curriculum & Resources TechMonday | Activity Informative Videos Revised Grant-in-Aid Fund Utilization Guideline for ATL schools (w.e.f. FY 22-23) Document ATL Handbook 1.0 Document ATL equipment list - Batch of 90 Document Grant-in-Aid Fund Utilization Guidelines Document ATL Banner and Posters (Print Media) Document ATL Orientation Brochure Document ATL equipment list - Batch of 60 Document ATL Operational Manual Document ATL Handbook 2.0 Document ATL Branding Guidelines Document Procurement Guidelines Document ATL Application Guidelines Document Process of L1 Purchase Document GeM Query Resolution Document Process of Direct Purchase Document Process of BID Creation Document ATL UC Portal - User Guide Document Form GFR 12-A Utilisation Certificate Document ATL Tranche 2 - Guidelines Document EAT-Filling all Module Final Document Income Tax Declaration Document ATL Utilization Portal - Guidelines Document Audited Statement of Account Document PPT - Teacher Training Reference Material Document Online Platform - AIM Document Level 1 - AIM Document #UnboxTinkering Teacher Training Activity Book Document Level 3 - AIM Document Equipment Manual - AIM Document Level 2 - AIM Document PFMS user Manual - E.A.T (issued by Department of Expenditure - MoF) Document PFMS User Manual-Role of Administrator (issued by Department of Expenditure - MoF) Document Guidelines for registration of school on PFMS Document Week 1 | 1st Jan 2024 Week 2 | 8th Jan 2024 Week 3 | 15th Jan 2024

  • Interfacing of Metal Touch Sensor with Arduino. | TechKnowSkola

    Back Interfacing of Metal Touch Sensor with Arduino. What is a Metal Touch Sensor? A metal touch sensor is a type of switch that only operates when it's touched by a charged body. It has a high-frequency transistor which can conduct electricity when receiving electromagnetic signals. The sensor has 3 main components on its circuit board. First, the sensor unit at the front of the module which measures the area physically and sends an analog signal to the second unit, the amplifier. The amplifier amplifies the signal, according to the resistant value of the potentiometer, and sends the signal to the analog output of the module. The third component is a comparator which switches the digital out and the LED if the signal falls under a specific value. In this experiment, touch the base electrode of a transistor with fingers to make it conduct electricity, for human body itself is a kind of conductor and an antenna that can receive electromagnetic waves in the air. These electromagnetic wave signals collected by human body are amplified by the transistor and processed by the comparator on the module to output steady signals. You can control the sensitivity by adjusting the potentiometer. Please notice: The signal will be inverted; that means that if you measure a high value, it is shown as a low voltage value at the analog output. Technical data / Short description Outputs a signal if the metal pike of the Sensor was touched. You can adjust the sensitivity of the sensor with the controller. Digital Out: At the moment of contact detection, a signal will be outputted. Analog Out: Direct measuring value of the sensor unit. LED1: Shows that the sensor is supplied with voltage LED2: Shows that the sensor detects a magnetic field Material Required: Material Quantity Arduino Uno 1 Metal Touch Sensor 1 Jumper cables 4 Pinout Diagram: This sensor doesn't show absolute values (like exact temperature in °C or magnetic field strength in mT). It is a relative measurement: you define an extreme value to a given normal environment situation and a signal will be send if the measurement exceeds the extreme value. Tested Programming Code: // Declaration and initialization of the input pin int Analog_Eingang = A0; int Digital_Eingang = 3; void setup () { pinMode (Analog_Eingang, INPUT); pinMode (Digital_Eingang, INPUT); Serial.begin (9600); } // The program reads the current value of the input pins // and outputs it via serial out void loop () { float Analog; int Digital; // Current value will be read and converted to the voltage Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0); Digital = digitalRead (Digital_Eingang); // and outputted here Serial.print ("Analog voltage value:"); Serial.print (Analog, 4); Serial.print ("V, "); Serial.print ("Extreme value:"); if(Digital==1) { Serial.println (" reached"); } Else { Serial.println (" not reached yet"); } Serial.println ("----------------------------------------------------------------"); delay (200); } Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of sensor for correct working. 5. Don’t lose hope if Sensor does not run properly for the first time, try again. Conclusion: You can successfully interface metal touch sensor and check for different conductivity values and can use it to detect different bodies when they come in contact. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Our Work | TechKnowSkola - Transforming Education Through STEAM & Robotics

    About TechKnowSkola Techknowskola – an integrated platform dedicated solely to technology and knowing how to use the technology to its full potential. Our framework is not only based on the principles of STEAM but the 21st-century skills set therefore providing an Inter-disciplinary educational approach that aims to inculcate a DIY mindset, concurrently learning the 4Cs of the 21st-century skillsets. Critical Thinking, Creativity, Collaboration and Communication. Thus igniting an everlasting interest /impact on how to learn, how to ask questions, how to experiment and how to create we aspire to facilitate learning environments that are relevant, holistic, dynamic, student-centred and fluid as these are vital for a student’s development Such an environment not only contributes towards the success of a student but prepares them for life. Teaching relevant, in-demand skills is the need of the hour in this rapidly evolving workforce & society to prepare students to become future innovators which empowers them further to become job creators. LAB SETUP 7 (6) 7 (4) 7 (2) 7 (1) 6 (11) 5 (21) 5 (20) 5 (17) 5 (18) 5 (16) 5 (15) 5 (14) 5 (12) 5 (13) 5 (11) 5 (10) 5 (9) 5 (7) 5 (4) 5 (6) 5 (5) 5 (3) 5 (2) 5 (1) 4 (7) 4 (6) 4 (5) 4 (3) 4 (2) 4 (1) 3 (3) 3 (2) 3 (1) 2 (11) 2 (9) 2 (10) 1 (7) 2 (6) 2 (4) 2 (3) 2 (2) 2 (1) 1 (6) 1 (5) 1 (3) 1 (1) 1 (2) IMG-20191130-WA0014 IMG-20191217-WA0044 IMG-20191217-WA0041 IMG-20191217-WA0042 IMG-20191130-WA0031 IMG-20191130-WA0029 IMG-20191130-WA0027 IMG-20191130-WA0024 IMG-20191130-WA0022 IMG-20191130-WA0018 IMG-20191130-WA0019 IMG-20191130-WA0017 IMG-20191130-WA0015 Teacher's Training IMG-20200130-WA0069 IMG-20200128-WA0068 IMG-20200128-WA0061 IMG-20200128-WA0042 IMG-20200128-WA0045 IMG-20200128-WA0041 IMG-20200110-WA0042 IMG-20200110-WA0041 IMG-20200109-WA0067 IMG-20200109-WA0068 IMG-20200109-WA0059 IMG-20200109-WA0056 IMG-20200109-WA0053 IMG-20200109-WA0052 IMG-20200109-WA0051 IMG-20200109-WA0043 IMG-20200109-WA0029 IMG-20200108-WA0015 IMG-20200108-WA0012 IMG-20200108-WA0010 IMG-20200107-WA0069 IMG-20200107-WA0065 IMG-20200107-WA0060 IMG-20200107-WA0058 IMG-20200107-WA0046 IMG-20200107-WA0024 IMG-20200107-WA0020 IMG-20200107-WA0017 IMG-20191219-WA0107 IMG-20200107-WA0014 IMG-20191219-WA0106 IMG-20191219-WA0084 IMG-20191219-WA0042 IMG-20191219-WA0043 IMG-20191212-WA0138 IMG-20191212-WA0139 IMG-20191212-WA0131 IMG-20191212-WA0089 IMG-20210728-WA0030 IMG-20191211-WA0013 IMG-20191211-WA0008 IMG-20191211-WA0007 IMG-20191203-WA0074 IMG-20191203-WA0083 IMG-20191203-WA0068

  • Company Details | Privacy Policy | Terms & Conditions | Refunds & Cancellation

    Company Legal Details Registered Address First floor, KH No 60/22, Plot No 33, New Gopal Nagar, Najafgarh, New Delhi - 110043 Mailing Address First Floor, Shop No 10, Dhansa Marg, Opp Nanda Enclave, Najafgarh, New Delhi 110043 GSTIN: 07AAJCT1713B1ZS CIN: U80902DL2022PTC393489 Bank Details: Account Holder: TECHKNOWSKOLA PRIVATE LIMITED Account Number: 2647918298 IFSC: KKBK0000298 Bank & Branch: KOTAK MAHINDRA BANK, BADSHAPUR Account Type: CURRENT UPI VPA - techknowskola@upi Contact Information: Email: Contact@techknowskola.com Phone: +91-9891232129 [We're solely reachable through WhatsApp. Please send a text there for our assistance.] Reach out to us via email or WhatsApp for inquiries, collaborations, or any other assistance. We are eager to connect with you and explore how Techknowskola can inspire greatness in the field of STEAM education. Let's embark on a journey of learning, innovation, and excellence together! Terms and Conditions Welcome to TechKnowSkola, a registered trademark of TechKnowSkola Private Limited. By accessing and using our website, you agree to abide by the following Terms and Conditions. Please read them carefully before proceeding. Definitions: "We" / "Us" / "Our" / "Company" refers to TechKnowSkola Private Limited. "Visitor" and "User" refer to individuals accessing our website. Usage of Content: All logos, brands, marks, labels, names, signatures, numerals, shapes, or any combinations thereof displayed on this site are properties owned or used under license by TechKnowSkola Private Limited and its associate entities. Any unauthorized use of these properties or content is strictly prohibited. Acceptable Website Use: (A) Security Rules: Visitors are not permitted to violate or attempt to violate the security of the website, including unauthorized access to data, probing system vulnerabilities, or sending unsolicited electronic mail. Violations may result in legal consequences. (B) General Rules: Visitors may not use the website to transmit, distribute, or store material that could constitute a criminal offense, violate any applicable laws or regulations, infringe intellectual property rights, or be considered libelous, defamatory, obscene, or hateful. Indemnity: Users agree to indemnify and hold TechKnowSkola Private Limited, its officers, directors, employees, and agents harmless from any claims, actions, liabilities, losses, or damages arising from their use of the website or breach of the terms. Liability: TechKnowSkola Private Limited and its group companies, directors, officers, or employees shall not be liable for any direct or indirect damages resulting from the use of the website or interruption of services. Users acknowledge that TechKnowSkola Private Limited is not responsible for the statements or conduct of third parties on the website. Disclaimer of Consequential Damages: In no event shall TechKnowSkola Private Limited or any associated parties be liable for any damages whatsoever, including incidental and consequential damages, resulting from the use or inability to use the website and its content. Please review these Terms and Conditions regularly, as they are binding on all users of our website. By continuing to use our website, you agree to these terms and any revisions made in the future. For any inquiries or clarifications, please contact us at contact@techknowskola.com . TechKnowSkola Private Limited is a registered startup working in the field of ed-tech, dedicated to transforming education through innovation. Privacy Policy TechKnowSkola Private Limited (referred to as "We" / "Us" / "Our"/” Company”) is committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy governs the collection, use, storage, and sharing of data provided by you ("You" /"Your" / "Yourself") while using our website (“Website”). User Information: To access certain services on our website, you may be required to provide personal information such as name, email address, age, etc. This information enables us to enhance your user experience and offer personalized services. We value the privacy of our users and assure you that your data is handled with utmost care and confidentiality. Cookies: We may use "cookies" to improve the responsiveness of our website and understand user interests. Cookies are small data files stored on your device that do not identify you personally but help us customize your experience. These cookies may be used to remember your preferences, login information, and enhance site navigation. Information Sharing: We do not share sensitive personal information without your prior consent, except as required by law or with our trusted service providers. Your data is treated with utmost confidentiality, and we take appropriate measures to ensure its protection. However, please note that while we prioritize data security, no online platform is completely immune to cyber threats. Information Security: We take data security seriously and have implemented technical and organizational measures to protect your data from unauthorized access, alteration, or disclosure. Our servers are secured behind firewalls, and access is restricted to authorized personnel only. Additionally, we regularly update our security protocols to stay ahead of potential threats. Links to Other Sites: Our Privacy Policy applies only to our website. If you visit linked sites, we are not responsible for their privacy practices or content. We recommend reviewing the privacy policies of those websites before sharing any personal information. Policy Updates: We may revise this Privacy Policy periodically to reflect changes in technology, legal requirements, or business practices. The latest version will be available on our website, and your continued use of our services implies acceptance of any updates. We encourage you to check this page regularly for the most recent policy. Grievance Redressal: For any complaints or concerns regarding our Privacy Policy, please contact our designated Grievance Officer, Mrs. Nihara Yadav. She is responsible for addressing any issues related to privacy and data protection. You can reach her via email at nihara@techknowskola.in or by phone at +91-9891232139. You may also send written communications to our address at Plot no. 33, KH No 60/22, First Floor, New Gopal Nagar, Najafgarh, New Delhi - 110043. Your trust is vital to us, and we assure you that we abide by the principles of privacy and data protection. If you have any questions or require further clarification, please feel free to contact us. We value your privacy and are committed to safeguarding your personal information. Refund and Cancellation Policy At TechKnowSkola, we strive for complete customer satisfaction. If, for any reason, you find our services unsatisfactory, we are committed to addressing your concerns and providing a resolution. Please take a moment to review our refund and cancellation policy for a clear understanding of the terms and procedures. Cancellation Policy: Clients who wish to cancel their projects can do so by contacting us through the "Contact Us" link on our website. Please note the following guidelines: Cancellation requests received earlier than 4 business days prior to the end of the current service period will be processed as cancellation of services for the next service period. Refund Policy: We always endeavor to create design concepts that meet our clients' expectations. However, if a client remains dissatisfied with our products, we offer a refund as part of our commitment to customer satisfaction. Please consider the following: To request a refund, please contact our customer support team through the designated channels. Refunds will be issued in the original payment method. If the payment was made via credit card, the refund will be credited to the original credit card used for the purchase. In the case of payments made through a payment gateway, the refund will be processed to the same account. Important Considerations: The refund and cancellation policy applies to specific services and products offered by TechKnowSkola. Kindly review the terms and conditions associated with each service or product before making a purchas e. Refund requests will be thoroughly investigated to ensure their validity. Genuine and verifiable reasons will be considered for processing the refund.or choosing TechKnowSkola. Clients are requested to share honest feedback and concerns about our services, as it helps us continually improve and deliver better experiences. In the event of any disputes or disagreements, TechKnowSkola reserves the right to take the final decision regarding refund requests. We value your trust in our services, and your satisfaction is our utmost priority. If you have any questions or require further assistance, please do not hesitate to reach out to our customer support team. Your feedback is valuable to us, and we are committed to providing a seamless and satisfactory experience for all our clients. Thank you f Copyright 2020 – TechKnowSkola Pvt. Ltd. All rights reserved. Trademark Notice: "Techknowskola" is a registered trademark of Techknowskola Private Limited. ​ Important Information: This material and its associated content are protected under copyright laws. TechKnowSkola Pvt. Ltd. holds all rights, including but not limited to text, images, graphics, audio, and video, as well as any other intellectual property present in this program. ​ Usage and Modification: Unauthorized reproduction, distribution, or modification of any content from TechKnowSkola without explicit approval is strictly prohibited and could result in legal action being taken against the infringing parties. This includes but is not limited to using our content for commercial purposes or personal gain. ​ Registration Requirement: While we offer this program free of charge, we require all users to complete a registration process. Registration ensures that you are provided with the most up-to-date information and helps us protect our content from misuse or unauthorized distribution. ​ Respect the Trademark: "Techknowskola" is a trademark that uniquely identifies our brand and services. Any unauthorized use of this trademark without proper approval is prohibited and may result in legal consequences. ​ Report Unauthorized Use: We encourage all individuals to report any instances of unauthorized use, modification, or distribution of our content. If you come across such violations, please notify us immediately so we can take appropriate action to protect our intellectual property. ​ Compliance with Copyright Laws: We kindly ask all users to respect copyright laws and adhere to the terms and conditions set forth by TechKnowSkola Pvt. Ltd. Misuse of our content can have severe consequences, and we are committed to protecting our intellectual property rights. ​ Thank you for your understanding and cooperation. Together, we can ensure that our valuable resources are used responsibly and contribute to a positive knowledge-sharing community.

  • Interfacing of Force Pressure Sensor with Arduino Uno. | TechKnowSkola

    Back Interfacing of Force Pressure Sensor with Arduino Uno. What is a Force Pressure Sensor? An FSR (Force Sensitive Resistor) or Force Pressure Sensor is a sensor that allows you to measure physical pressure, weight and squeezing. The resistance of an FSR varies as the force on the sensor increases or decreases. When no pressure is being applied to the FSR, its resistance will be larger than 1MΩ. The harder you press on the sensor’s head, the lower the resistance between the two terminals drops. By combining the FSR with a static resistor to create a voltage divider, you can produce a variable voltage that can be read by a microcontroller’s analog-to-digital converter. Material Required: Material Quantity Arduino Uno 1 Force Pressure Sensor 1 Jumper cables 4 LED 1 Resistor 1 ( 10 k) Pinout Diagram: Circuit Diagram: The connections are pretty easy and straight forward. Make the circuit by referring the images. The FSR has two pins, one will be connected to 5V pin. The other to A0 directly and to Gnd pin via a resistor. If you need to connect the LED and control it's brightness, then connect it across pin 13 and Gnd of the Arduino. Tested Programming Code: int fsrPin = 0; // the FSR and 10K pulldown are connected to a0 int fsrReading; // the analog reading from the FSR resistor divider void setup(void) { Serial.begin(9600); } void loop(void) { fsrReading = analogRead(fsrPin); Serial.print("Analog reading = "); Serial.print(fsrReading); // the raw analog reading if (fsrReading == 0) { Serial.println(" - No pressure"); } else if (fsrReading < 10) { Serial.println(" - Light touch"); } else if (fsrReading < 50) { Serial.println(" - Light squeeze"); } else if (fsrReading < 150) { Serial.println(" - Medium squeeze"); } else { Serial.println(" - Big squeeze"); } delay(1000); } Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of Force Pressure Sensor for correct working. 5. Don’t lose hope if Force Pressure Sensor does not run properly for the first time, try again. Conclusion: Once your sketch is running, you have to open your serial monitor. There you can see the Pressure applied on the sensor as Light , Big or No squeeze. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Contact | TechKnowSkola

    Say Hello Thank you for considering contacting us. We take pride in providing exceptional customer service and are committed to addressing your needs in a timely and professional manner. Please don't hesitate to reach out to us any questions or concerns you may have. We look forward to hearing from you. Landline Email +91-11-42267175 support@techknowskola.com Support Team - 1 Support Team - 2 +91-9625624848 +91-9311781140 Social Media First Name Last Name Email Code Phone Message I want to subscribe to the newsletter. Send Thank you for submitting! We appreciate your interest and will get back to you as soon as possible. For more immediate support or solutions, please feel free to connect with us via WhatsApp. Thank you for considering our services. Visit Us Our doors are always open to welcome you. Come and visit us to experience our exceptional services and products. If you have any questions or concerns, our team of professionals is always ready to assist you. Contact us today to schedule your visit. Address 1st & 2nd Floor, Shop No. 10, Nanda Enclave, Dhansa Marg, Najafgarh, New Delhi - 43 Opening Hours Mon - Fri 10:00 am – 5:00 pm

  • Interfacing of GSM 800 L Modules with Arduino. | TechKnowSkola

    Back Interfacing of GSM 800 L Modules with Arduino. What is a GSM Module ? The SIM800L is a cheap and portable GSM breakout board with all the capabilities of the larger SIM900 shields. In this Arduino SIM800L tutorial, I will help you get started with this nifty device. Sending and receiving texts with your Arduino have never been easier! SIM800L Introduction Here are the features of the SIM800L breakout board: 2G quad-band @ 850/900/1800/1900 MHz Receive and make calls using the speaker and microphone outputs Receive and send SMS Connect to the Internet via GPRS Listen to FM radio broadcasts Accepts AT Commands From the specification of SIM800L we would able to find out that its: Operating Voltage: 3.3 - 5 Volts Recommended voltage: 3.4 - 4.4 Volts Recommended Current: 1 – 2 Amp Therefore, if we use voltages below 3.4, either the SIM800L will not work or it will work but not all its features are responding (e.g unable to read SIM card). But if use voltage equal to its MAXIMUM operating voltage, the module might heat up and then got destroyed, or if we use ABOVE operating voltage, well, it will absolutely destroy the module. Most important, we should not supply a current above 2 Amp (e.g 5 Amp) to the module, it will destroy the module even if your voltage is in 3.4 - 4.4 volts range. But here in our tutorial, you will observe that the module get 5V supply from arduino. That’s sound risky, but as my measurement, computation and observation, 5V pin in Arduino generate current from 500mA -1 Amp which gives a maximum power of 5 Watts. 5 watts qualifies from recommended power which would not cause the module to heat up or destroyed. That’s why 5V pin in Arduino qualifies as a supply voltage. If the power to the SIM800L is enough, the on-board LED starts blinking. The frequency of the blinking means something: Every second: searching for a network. Every three seconds: connected to a network. Twice per second: connected through GPRS. Antennas are essential for this kind of module especially if your project is indoors. Without an antenna, there would not be enough transmitting power for the SIM800L to perform GSM services such as calls and SMS. Material Required: Material Quantity Arduino Uno 1 SIM 800L 1 Jumper cables 6 Breadboard 1 Pinout Diagram: Circuit Diagram: Note: Make sure you already inserted your SIM card before powering the module. If not, you will not see any changes in the module LED indicator. SIM800 VCC ↔ Arduino 5v SIM800 GND ↔ Arduino GND SIM800 SIM_TXD ↔ Arduino pin 3 SIM800 SIM_RXD ↔ Arduino pin 2 Step 2: Code Download and Add Adafriut Fona library to your Arduino library. Then open and upload the Fonatest sample code from Adafruit Fona. Open Serial monitor then change baudrate to 115200 and choose NL & CR. Then you'll see Menu of test setup, choose anything you want to test (e.g send and receive message). Tested Programming Code: #include "Adafruit_FONA.h" #define FONA_RX 2 #define FONA_TX 3 #define FONA_RST 4 // this is a large buffer for replies char replybuffer[255]; // We default to using software serial. If you want to use hardware serial // (because softserial isnt supported) comment out the following three lines // and uncomment the HardwareSerial line #include SoftwareSerial fonaSS = SoftwareSerial(FONA_TX, FONA_RX); SoftwareSerial *fonaSerial = &fonaSS; // Hardware serial is also possible! // HardwareSerial *fonaSerial = &Serial1; // Use this for FONA 800 and 808s Adafruit_FONA fona = Adafruit_FONA(FONA_RST); // Use this one for FONA 3G //Adafruit_FONA_3G fona = Adafruit_FONA_3G(FONA_RST); uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout = 0); uint8_t type; void setup() { while (!Serial); Serial.begin(115200); Serial.println(F("FONA basic test")); Serial.println(F("Initializing.. (May take 3 seconds)")); fonaSerial->begin(4800); if (! fona.begin(*fonaSerial)) { Serial.println(F("Couldn't find FONA")); while (1); } type = fona.type(); Serial.println(F("FONA is OK")); Serial.print(F("Found ")); switch (type) { case FONA800L: Serial.println(F("FONA 800L")); break; case FONA800H: Serial.println(F("FONA 800H")); break; case FONA808_V1: Serial.println(F("FONA 808 (v1)")); break; case FONA808_V2: Serial.println(F("FONA 808 (v2)")); break; case FONA3G_A: Serial.println(F("FONA 3G (American)")); break; case FONA3G_E: Serial.println(F("FONA 3G (European)")); break; default: Serial.println(F("???")); break; } // Print module IMEI number. char imei[16] = {0}; // MUST use a 16 character buffer for IMEI! uint8_t imeiLen = fona.getIMEI(imei); if (imeiLen > 0) { Serial.print("Module IMEI: "); Serial.println(imei); } // Optionally configure a GPRS APN, username, and password. // You might need to do this to access your network's GPRS/data // network. Contact your provider for the exact APN, username, // and password values. Username and password are optional and // can be removed, but APN is required. //fona.setGPRSNetworkSettings(F("your APN"), F("your username"), F("your password")); // Optionally configure HTTP gets to follow redirects over SSL. // Default is not to follow SSL redirects, however if you uncomment // the following line then redirects over SSL will be followed. //fona.setHTTPSRedirect(true); printMenu(); } void printMenu(void) { Serial.println(F(" ")); Serial.println(F("[?] Print this menu")); Serial.println(F("[a] read the ADC 2.8V max (FONA800 & 808)")); Serial.println(F("[b] read the Battery V and % charged")); Serial.println(F("[C] read the SIM CCID")); Serial.println(F("[U] Unlock SIM with PIN code")); Serial.println(F("[i] read RSSI")); Serial.println(F("[n] get Network status")); Serial.println(F("[v] set audio Volume")); Serial.println(F("[V] get Volume")); Serial.println(F("[H] set Headphone audio (FONA800 & 808)")); Serial.println(F("[e] set External audio (FONA800 & 808)")); Serial.println(F("[T] play audio Tone")); Serial.println(F("[P] PWM/Buzzer out (FONA800 & 808)")); // FM (SIM800 only!) Serial.println(F("[f] tune FM radio (FONA800)")); Serial.println(F("[F] turn off FM (FONA800)")); Serial.println(F("[m] set FM volume (FONA800)")); Serial.println(F("[M] get FM volume (FONA800)")); Serial.println(F("[q] get FM station signal level (FONA800)")); // Phone Serial.println(F("[c] make phone Call")); Serial.println(F("[A] get call status")); Serial.println(F("[h] Hang up phone")); Serial.println(F("[p] Pick up phone")); // SMS Serial.println(F("[N] Number of SMSs")); Serial.println(F("[r] Read SMS #")); Serial.println(F("[R] Read All SMS")); Serial.println(F("[d] Delete SMS #")); Serial.println(F("[s] Send SMS")); Serial.println(F("[u] Send USSD")); // Time Serial.println(F("[y] Enable network time sync (FONA 800 & 808)")); Serial.println(F("[Y] Enable NTP time sync (GPRS FONA 800 & 808)")); Serial.println(F("[t] Get network time")); // GPRS Serial.println(F("[G] Enable GPRS")); Serial.println(F("[g] Disable GPRS")); Serial.println(F("[l] Query GSMLOC (GPRS)")); Serial.println(F("[w] Read webpage (GPRS)")); Serial.println(F("[W] Post to website (GPRS)")); // GPS if ((type == FONA3G_A) || (type == FONA3G_E) || (type == FONA808_V1) || (type == FONA808_V2)) { Serial.println(F("[O] Turn GPS on (FONA 808 & 3G)")); Serial.println(F("[o] Turn GPS off (FONA 808 & 3G)")); Serial.println(F("[L] Query GPS location (FONA 808 & 3G)")); if (type == FONA808_V1) { Serial.println(F("[x] GPS fix status (FONA808 v1 only)")); } Serial.println(F("[E] Raw NMEA out (FONA808)")); } Serial.println(F("[S] create Serial passthru tunnel")); Serial.println(F(" ")); Serial.println(F("")); } void loop() { Serial.print(F("FONA> ")); while (! Serial.available() ) { if (fona.available()) { Serial.write(fona.read()); } } char command = Serial.read(); Serial.println(command); switch (command) { case '?': { printMenu(); break; } case 'a': { // read the ADC uint16_t adc; if (! fona.getADCVoltage(&adc)) { Serial.println(F("Failed to read ADC")); } else { Serial.print(F("ADC = ")); Serial.print(adc); Serial.println(F(" mV")); } break; } case 'b': { // read the battery voltage and percentage uint16_t vbat; if (! fona.getBattVoltage(&vbat)) { Serial.println(F("Failed to read Batt")); } else { Serial.print(F("VBat = ")); Serial.print(vbat); Serial.println(F(" mV")); } if (! fona.getBattPercent(&vbat)) { Serial.println(F("Failed to read Batt")); } else { Serial.print(F("VPct = ")); Serial.print(vbat);Serial.println(F("%")); } break; } case 'U': { // Unlock the SIM with a PIN code char PIN[5]; flushSerial(); Serial.println(F("Enter 4-digit PIN")); readline(PIN, 3); Serial.println(PIN); Serial.print(F("Unlocking SIM card: ")); if (! fona.unlockSIM(PIN)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; } case 'C': { // read the CCID fona.getSIMCCID(replybuffer); // make sure replybuffer is at least 21 bytes! Serial.print(F("SIM CCID = ")); Serial.println(replybuffer); break; } case 'i': { // read the RSSI uint8_t n = fona.getRSSI(); int8_t r; Serial.print(F("RSSI = ")); Serial.print(n); Serial.print(": "); if (n == 0) r = -115; if (n == 1) r = -111; if (n == 31) r = -52; if ((n >= 2) && (n <= 30)) { r = map(n, 2, 30, -110, -54); } Serial.print(r); Serial.println(F(" dBm")); break; } case 'n': { // read the network/cellular status uint8_t n = fona.getNetworkStatus(); Serial.print(F("Network status ")); Serial.print(n); Serial.print(F(": ")); if (n == 0) Serial.println(F("Not registered")); if (n == 1) Serial.println(F("Registered (home)")); if (n == 2) Serial.println(F("Not registered (searching)")); if (n == 3) Serial.println(F("Denied")); if (n == 4) Serial.println(F("Unknown")); if (n == 5) Serial.println(F("Registered roaming")); break; } /*** Audio ***/ case 'v': { // set volume flushSerial(); if ( (type == FONA3G_A) || (type == FONA3G_E) ) { Serial.print(F("Set Vol [0-8] ")); } else { Serial.print(F("Set Vol % [0-100] ")); } uint8_t vol = readnumber(); Serial.println(); if (! fona.setVolume(vol)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; } case 'V': { uint8_t v = fona.getVolume(); Serial.print(v); if ( (type == FONA3G_A) || (type == FONA3G_E) ) { Serial.println(" / 8"); } else { Serial.println("%"); } break; } case 'H': { // Set Headphone output if (! fona.setAudio(FONA_HEADSETAUDIO)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } fona.setMicVolume(FONA_HEADSETAUDIO, 15); break; } case 'e': { // Set External output if (! fona.setAudio(FONA_EXTAUDIO)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } fona.setMicVolume(FONA_EXTAUDIO, 10); break; } case 'T': { // play tone flushSerial(); Serial.print(F("Play tone #")); uint8_t kittone = readnumber(); Serial.println(); // play for 1 second (1000 ms) if (! fona.playToolkitTone(kittone, 1000)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; } case 'f': { // get freq flushSerial(); Serial.print(F("FM Freq (eg 1011 == 101.1 MHz): ")); uint16_t station = readnumber(); Serial.println(); // FM radio ON using headset if (fona.FMradio(true, FONA_HEADSETAUDIO)) { Serial.println(F("Opened")); } if (! fona.tuneFMradio(station)) { Serial.println(F("Failed")); } else { Serial.println(F("Tuned")); } break; } case 'F': { // FM radio off if (! fona.FMradio(false)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; } case 'm': { // Set FM volume. flushSerial(); Serial.print(F("Set FM Vol [0-6]:")); uint8_t vol = readnumber(); Serial.println(); if (!fona.setFMVolume(vol)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; case 'M': { // Get FM volume. uint8_t fmvol = fona.getFMVolume(); if (fmvol < 0) { Serial.println(F("Failed")); } else { Serial.print(F("FM volume: ")); Serial.println(fmvol, DEC); } break; } case 'q': { // Get FM station signal level (in decibels). flushSerial(); Serial.print(F("FM Freq (eg 1011 == 101.1 MHz): ")); uint16_t station = readnumber(); Serial.println(); int8_t level = fona.getFMSignalLevel(station); if (level < 0) { Serial.println(F("Failed! Make sure FM radio is on (tuned to station).")); } else { Serial.print(F("Signal level (dB): ")); Serial.println(level, DEC); } break; } /*** PWM ***/ case 'P': { // PWM Buzzer output @ 2KHz max flushSerial(); Serial.print(F("PWM Freq, 0 = Off, (1-2000): ")); uint16_t freq = readnumber(); Serial.println(); if (! fona.setPWM(freq)) { break; } /*** Call ***/ case 'c': { // call a phone! char number[30]; flushSerial(); Serial.print(F("Call #")); readline(number, 30); Serial.println(); Serial.print(F("Calling ")); Serial.println(number); if (!fona.callPhone(number)) { Serial.println(F("Failed")); } else { Serial.println(F("Sent!")); } break; } case 'A': { // get call status int8_t callstat = fona.getCallStatus(); switch (callstat) { case 0: Serial.println(F("Ready")); break; case 1: Serial.println(F("Could not get status")); break; case 3: Serial.println(F("Ringing (incoming)")); break; case 4: Serial.println(F("Ringing/in progress (outgoing)")); break; default: Serial.println(F("Unknown")); break; } break; } case 'h': { // hang up! if (! fona.hangUp()) { break; } case 'p': { // pick up! if (! fona.pickUp()) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } break; } /*** SMS ***/ case 'N': { // read the number of SMS's! int8_t smsnum = fona.getNumSMS(); if (smsnum < 0) { Serial.println(F("Could not read # SMS")); } else { Serial.print(smsnum); Serial.println(F(" SMS's on SIM card!")); } break; } case 'r': { // read an SMS flushSerial(); Serial.print(F("Read #")); uint8_t smsn = readnumber(); Serial.print(F("\n\rReading SMS #")); Serial.println(smsn); // Retrieve SMS sender address/phone number. if (! fona.getSMSSender(smsn, replybuffer, 250)) { Serial.println("Failed!"); break; } Serial.print(F("FROM: ")); Serial.println(replybuffer); // Retrieve SMS value. uint16_t smslen; if (! fona.readSMS(smsn, replybuffer, 250, &smslen)) { // pass in buffer and max len! Serial.println("Failed!"); break; } Serial.print(F("***** SMS #")); Serial.print(smsn); Serial.print(" ("); Serial.print(smslen); Serial.println(F(") bytes *****")); Serial.println(replybuffer); Serial.println(F("*****")); break; } case 'R': { // read all SMS int8_t smsnum = fona.getNumSMS(); uint16_t smslen; int8_t smsn; if ( (type == FONA3G_A) || (type == FONA3G_E) ) { smsn = 0; // zero indexed smsnum--; } else { smsn = 1; // 1 indexed } for ( ; smsn <= smsnum; smsn++) { Serial.print(F("\n\rReading SMS #")); Serial.println(smsn); if (!fona.readSMS(smsn, replybuffer, 250, &smslen)) { // pass in buffer and max len! Serial.println(F("Failed!")); break; } // if the length is zero, its a special case where the index number is higher // so increase the max we'll look at! if (smslen == 0) { Serial.println(F("[empty slot]")); smsnum++; continue; } Serial.print(F("***** SMS #")); Serial.print(smsn); Serial.print(" ("); Serial.print(smslen); Serial.println(F(") bytes *****")); Serial.println(replybuffer); Serial.println(F("*****")); } break; } case 'd': { // delete an SMS flushSerial(); Serial.print(F("Delete #")); uint8_t smsn = readnumber(); Serial.print(F("\n\rDeleting SMS #")); Serial.println(smsn); if (fona.deleteSMS(smsn)) { Serial.println(F("OK!")); } else { Serial.println(F("Couldn't delete")); } break; } case 's': { // send an SMS! char sendto[21], message[141]; flushSerial(); Serial.print(F("Send to #")); readline(sendto, 20); Serial.println(sendto); Serial.print(F("Type out one-line message (140 char): ")); readline(message, 140); Serial.println(message); if (!fona.sendSMS(sendto, message)) { Serial.println(F("Failed")); } else { Serial.println(F("Sent!")); } break; } case 'u': { // send a USSD! char message[141]; flushSerial(); Serial.print(F("Type out one-line message (140 char): ")); readline(message, 140); Serial.println(message); uint16_t ussdlen; if (!fona.sendUSSD(message, replybuffer, 250, &ussdlen)) { // pass in buffer and max len! Serial.println(F("Failed")); } else { Serial.println(F("Sent!")); Serial.print(F("***** USSD Reply")); Serial.print(" ("); Serial.print(ussdlen); Serial.println(F(") bytes *****")); Serial.println(replybuffer); Serial.println(F("*****")); } } /*** Time ***/ case 'y': { // enable network time sync if (!fona.enableNetworkTimeSync(true)) Serial.println(F("Failed to enable")); break; } case 'Y': { // enable NTP time sync if (!fona.enableNTPTimeSync(true, F("pool.ntp.org"))) Serial.println(F("Failed to enable")); break; } case 't': { // read the time char buffer[23]; fona.getTime(buffer, 23); // make sure replybuffer is at least 23 bytes! Serial.print(F("Time = ")); Serial.println(buffer); break; } /*********************************** GPS (SIM808 only) */ case 'o': { // turn GPS off if (!fona.enableGPS(false)) Serial.println(F("Failed to turn off")); break; } case 'O': { // turn GPS on if (!fona.enableGPS(true)) Serial.println(F("Failed to turn on")); break; } case 'x': { int8_t stat; // check GPS fix stat = fona.GPSstatus(); if (stat < 0) Serial.println(F("Failed to query")); if (stat == 0) Serial.println(F("GPS off")); if (stat == 1) Serial.println(F("No fix")); if (stat == 2) Serial.println(F("2D fix")); if (stat == 3) Serial.println(F("3D fix")); break; } case 'L': { // check for GPS location char gpsdata[120]; fona.getGPS(0, gpsdata, 120); if (type == FONA808_V1) Serial.println(F("Reply in format: mode,longitude,latitude,altitude,utctime(yyyymmddHHMMSS),ttff,satellites,speed,course")); else Serial.println(F("Reply in format: mode,fixstatus,utctime(yyyymmddHHMMSS),latitude,longitude,altitude,speed,course,fixmode,reserved1,HDOP, PDOP,VDOP,reserved2,view_satellites,used_satellites,reserved3,C/N0max,HPA,VPA")); Serial.println(gpsdata); break; } case 'E': { flushSerial(); if (type == FONA808_V1) { Serial.print(F("GPS NMEA output sentences (0 = off, 34 = RMC+GGA, 255 = all)")); } else { Serial.print(F("On (1) or Off (0)? ")); } uint8_t nmeaout = readnumber(); // turn on NMEA output fona.enableGPSNMEA(nmeaout); break; } /*********************************** GPRS */ case 'g': { // turn GPRS off if (!fona.enableGPRS(false)) Serial.println(F("Failed to turn off")); break; } case 'G': { // turn GPRS on if (!fona.enableGPRS(true)) Serial.println(F("Failed to turn on")); break; } case 'l': { // check for GSMLOC (requires GPRS) uint16_t returncode; if (!fona.getGSMLoc(&returncode, replybuffer, 250)) Serial.println(F("Failed!")); if (returncode == 0) { Serial.println(replybuffer); } else { Serial.print(F("Fail code #")); Serial.println(returncode); } break; } case 'w': { // read website URL uint16_t statuscode; int16_t length; char url[80]; flushSerial(); Serial.println(F("NOTE: in beta! Use small webpages to read!")); Serial.println(F("URL to read (e.g. www.adafruit.com/testwifi/index.html):") ); Serial.print(F("http://")); readline(url, 79); Serial.println(url); Serial.println(F("****")); if (!fona.HTTP_GET_start(url, &statuscode, (uint16_t *)&length)){ Serial.println("Failed!"); break; } while (length > 0) { while (fona.available()) { char c = fona.read(); // Serial.write is too slow, we'll write directly to Serial register! #if defined(AVR_ATmega328P ) || defined( AVR_ATmega168) loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */ UDR0 = c; #else #endif } Serial.write(c); length--; if (! length) break; } Serial.println(F("\n****")); fona.HTTP_GET_end(); break; } case 'W': { // Post data to website uint16_t statuscode; int16_t length; char url[80]; char data[80]; flushSerial(); Serial.println(F("NOTE: in beta! Use simple websites to post!")); Serial.println(F("URL to post (e.g. httpbin.org/post):")); Serial.print(F("http://")); readline(url, 79); Serial.println(url); Serial.println(F("Data to post (e.g. \"foo\" or \"{\"simple\":\"json\"}\"):")); readline(data, 79); Serial.println(data); Serial.println(F("****")); if (!fona.HTTP_POST_start(url, F("text/plain"), (uint8_t *) data, strlen(data), &statuscode, (uint16_t *)&length)) { Serial.println("Failed!"); break; } while (length > 0) { while (fona.available()) { char c = fona.read(); #if defined( AVR_ATmega328P ) || defined( AVR_ATmega168 ) loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */ UDR0 = c; #else #endif Serial.write(c); length--; if (! length) break; } } Serial.println(F("\n****")); fona.HTTP_POST_end(); break; } /*****************************************/ case 'S': { Serial.println(F("Creating SERIAL TUBE")); while (1) { while (Serial.available()) { delay(1); fona.write(Serial.read()); } if (fona.available()) { Serial.write(fona.read()); } } break; } default: { Serial.println(F("Unknown command")); printMenu(); break; } } // flush input flushSerial(); while (fona.available()) { Serial.write(fona.read()); } } void flushSerial() { while (Serial.available()) Serial.read(); } char readBlocking() { while (!Serial.available()); return Serial.read(); } uint16_t readnumber() { uint16_t x = 0; char c; while (! isdigit(c = readBlocking())) { //Serial.print(c); } Serial.print(c); x = c - '0'; while (isdigit(c = readBlocking())) { Serial.print(c); x *= 10; x += c - '0'; } return x; } uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout) { uint16_t buffidx = 0; boolean timeoutvalid = true; if (timeout == 0) timeoutvalid = false; while (true) { if (buffidx > maxbuff) { //Serial.println(F("SPACE")); break; } while (Serial.available()) { char c = Serial.read(); //Serial.print(c, HEX); Serial.print("#"); Serial.println(c); if (c == '\r') continue; if (c == 0xA) { if (buffidx == 0) // the first 0x0A is ignored continue; timeout = 0; // the second 0x0A is the end of the line timeoutvalid = true; break; } buff[buffidx] = c; buffidx++; } if (timeoutvalid && timeout == 0) { //Serial.println(F("TIMEOUT")); break; } delay(1); } buff[buffidx] = 0; // null term return buffidx; } Precautions: 1. Double check the connections before powering on thecircuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from ArduinoIDE. 4. Ensure proper placement of sensor for correct working. 5. Don’t lose hope if Flex Sensor or LED does not runs properly for the first time, try again. Conclusion: You can successfully interface different devices using the Resistance principle of Flex Sensor.s Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Interfacing of Temperature Sensor (LM35) with Arduino Uno. | TechKnowSkola

    Back Interfacing of Temperature Sensor (LM35) with Arduino Uno. What is a Temperature Sensor? LM35 is a precision temperature sensor with its output proportional to the temperature (in C). With LM35, temperature can be measured more accurately than with a thermistor. It also possess low self heating and does not cause more than 0.1 C temperature rise in still air. The operating temperature range is from -55°C to 150°C. The output voltage varies by 10mV in response to ambient temperature; its scale factor is 0.01V/ C. Material Required: Material Quantity Arduino Uno 1 Temperature Sensor(LM35) 1 Jumper cables 4 Pinout Diagram: Circuit Diagram: Parameter Value VCC 5 V DC from your Arduino Ground GND from your Arduino Out Connect to Analog Pin A0 Tested Programming Code: float tempC; int reading; int tempPin = 0; void setup() { analogReference(INTERNAL); Serial.begin(9600); } void loop() { reading = analogRead(tempPin); tempC = reading / 9.31; Serial.print("Temprature= "); Serial.print(tempC); Serial.print("*C"); Serial.println(); delay(1000); } Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of Temperature Sensor for correct working. 5. Don’t lose hope if Temperature Sensor does not run properly for the first time, try again. Conclusion: Once your sketch is running, you have to open your serial monitor. There you can see the Temperature of the surroundings. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Lab Resources | TechKnowSkola - Empowering Educators with Comprehensive Teaching Materials

    LAB Resources At TechKnowSkola, we are your reliable partner in education. As an abbreviation for our commitment, "We" stands for TechKnowSkola. We offer diverse lab resources aligned with your educational institution's lab setup, providing comprehensive support. From curriculums and teaching materials to activity sheets and beyond, we ensure all lab-related resources are included in our service support model. With us, you can rest assured that you'll have everything you need to create a dynamic and engaging learning environment for your students. Together, let's unlock the potential of tomorrow's innovators! Curriculums Activity Sheets Training Materials Guidelines by AIM Teaching Materials Project Guides Safety Guidelines ​ Reference Books FREE Resources Techknowskola's Free resources have got you covered! Enjoy AIM's guidelines and curriculum, plus access to Activities and TKS developed projects. A treasure trove of innovation awaits you! Click Here Guidelines by AIM Activity & Project Sheet PFMS & GeM Curriculum Informative Videos Paid Resources Techknowskola's Paid resources, a treasure trove of materials designed for your Labs. Project Guides, Ebooks, Activity Sheets, Curriculum alinged with Textbook & NEP 2020 and a lot more to unlock endless learning possibilities! Click Here E-Book Teachers Resources Project Guide Video Library Curriculum

  • Interfacing of 28BYJ Stepper Driver with Arduino. | TechKnowSkola

    Back Interfacing of 28BYJ Stepper Driver with Arduino. What is so special about steppers? A stepper motor can move in accurate, fixed angle increments known as steps. For practical purposes, a stepper motor is a bit like a servo: you can tell it to move to a pre-defined position and can count on getting fairly consistent results with multiple repetitions. Servos though, are usually limited to a 0-180 degree range, while a stepper motor can rotate continuously, similar to a regular DC motor. The advantage of steppers over DC motors is that you can achieve much higher precision and control over the movement. The downside of using steppers is that they are a bit more complex to control than servos and DC motors . The 28BYJ-48 Stepper Motor Datasheet The 28BYJ-48 is a small, cheap, 5 volt geared stepping motors. These stepping motors are apparently widely used to control things like automated blinds, A/C units and are mass produced. Due to the gear reduction ratio of *approximately* 64:1 it offers decent torque for its size at speeds of about 15 rotations per minute (RPM). With some software “trickery” to accelerate gradually and a higher voltage power source (I tested them with 12 volts DC) I was able to get about 25+ RPM. These little steppers can be purchased together with a small breakout board for the Arduino compatible ULN2003 stepper motor driver for less than $5. Quite a bargain, compared to the price of a geared DC motor, a DC motor controller and a wheel encoder! The low cost and small size makes the 28BYJ-48 an ideal option for small robotic applications, and an excellent introduction to stepper motor control with Arduino. Here are the detailed specs of the 28BYJ-48 stepper motor. Motor Type Unipolar stepper motor Connection Type 5 Wire Connection (to the motor controller) Voltage 5-12 Volts DC Frequency 100 Hz Step mode Half-step mode recommended(8 step control signal sequence) Half-step mode: 8 step control signal sequence (recommended) 5.625 degrees per step / 64 steps per one revolution of the internal motor shaft Full Step mode: 4 step control signal Step angle sequence 11.25 degrees per step / 32 steps per one revolution of the internal motor shaft Manufacturer specifies 64:1 . Some patient and diligent people on the Arduino forums have disassembled the gear train of these little motors and determined that the exact gear ratio is in fact 63.68395:1 . My observations confirm their findings. These means that in the recommended half-step mode we will have:64 steps per motor rotation x 63.684 gear ratio = Gear ratio 4076 steps per full revolution (approximately). Wiring to the ULN2003 controller A (Blue), B (Pink), C (Yellow), D (Orange), E (Red, Mid- Point) Weight 30g Material Required: Material Quantity Arduino Uno 1 Stepper Driver 1 Jumper cables 6 Stepper Motor 1 Pinout Diagram: The motor has 4 coils of wire that are powered in a sequence to make the magnetic motor shaft spin. When using the full-step method, 2 of the 4 coils are powered at each step. The default stepper library that comes pre-installed with the Arduino IDE uses this method. The 28BYH-48 datasheet specifies that the preferred method for driving this stepper is using the half-step method, where we first power coil 1 only, then coil 1 and 2 together, then coil 2 only and so on…With 4 coils, this means 8 different signals, like in the table below. Circuit Diagram: Wiring the ULN2003 stepper motor driver to Arduino Uno : The ULN2003 stepper motor driver board allows you to easily control the 28BYJ-48 stepper motor from a microcontroller, like the Arduino Uno. One side of the board side has a 5 wire socket where the cable from the stepper motor hooks up and 4 LEDs to indicate which coil is currently powered. The motor cable only goes in one way, which always helps. On the side you have a motor on / off jumper (keep it on to enable power to the stepper). The two pins below the 4 resistors, is where you provide power to the stepper. Note that powering the stepper from the 5 V rail of the Arduino is not recommended. A separate 5-12 V 1 Amp power supply or battery pack should be used, as the motor may drain more current than the microcontroller can handle and could potentially damage it. In the middle of the board we have the ULN2003 chip. At the bottom are the 4 control inputs that should be connected to four Arduino digital pins . Hooking it up to the Arduino Connect the ULN2003 driver IN1, IN2, IN3 and IN4 to digital pin 3, 4, 5 and 6 respectively on the Arduino Uno. Connect the positive lead from a decent 5-12V battery pack to the “+” pin of the ULN2003 driver and the ground to the “-” pin. Make sure that the “on/off” jumper next to the “-” pin is on. If you power the Arduino from a different battery pack, connect the grounds together. Arduino stepper code and the AccelStepper library The default stepper library that comes pre-installed with the Arduino IDE supports the full-step method only and has limited features. It does not run the 28BYJ-48 motors very efficiently and getting two of them running at the same time for a differential drive robot is a bit more difficult. I came across example sketch by 4tronix that used the half-step method with no additional libraries. Their code worked well and I was able to modify it, so that I can run two steppers at the same time. Still, I was only able to get my stepper motor spinning fairly slow and it was getting quite warm, for some reason. Additionally, that sample code uses delays for the steps and that will cause some issues when we start adding more complex functions in the loop and hook up various sensors. Then I came across the AccelStepper library. It runs the 28BYJ-48 steppers very efficiently (they never go as hot as with the other options I tried) and also supports acceleration (which allows the stepper to get to a higher speed). The library uses non blocking code for the steps and has quite a few other nice features. After some messing around with the documentation and the examples I got everything up and running. Below is the code that will slowly accelerate the 28BYJ-48 in one direction, then decelerate to a stop and accelerate in the opposite direction. Naturally, make sure you download and install the AccelStepper library first! #include #define HALFSTEP 8 // Motor pin definitions #define motorPin1 3 // IN1 on the ULN2003 driver 1 #define motorPin2 4 // IN2 on the ULN2003 driver 1 #define motorPin3 5 // IN3 on the ULN2003 driver 1 #define motorPin4 6 // IN4 on the ULN2003 driver 1 // Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48 AccelStepper stepper1 ( HALFSTEP , motorPin1 , motorPin3 , motorPin2 , motorPin4 ); void setup () { stepper1 . setMaxSpeed ( 1000.0 ); stepper1 . setAcceleration ( 100.0 ); stepper1 . setSpeed ( 200 ); stepper1 . moveTo ( 20000 ); } //--(end setup )--- void loop () { //Change direction when the stepper reaches the target position if ( stepper1 . distanceToGo () == 0 ) { stepper1 . moveTo (- stepper1 . currentPosition ()); } stepper1 . run (); } The code above will not push this motor to its limit. You can experiment with the acceleration and speed settings to see what is the best you can squeeze out. Note that for nigher speeds, you will likely need a higher voltage DC source. If you got your stepper running, here is the code that the StepperBot from the video above is running. You will need to adjust the speed, as well variables based on your base and wheel sizes, if you want to have your bot moving in a square path. #include #define HALFSTEP 8 // motor pins #define motorPin1 3 // IN1 on the ULN2003 driver 1 #define motorPin2 4 // IN2 on the ULN2003 driver 1 #define motorPin3 5 // IN3 on the ULN2003 driver 1 #define motorPin4 6 // IN4 on the ULN2003 driver 1 #define motorPin5 8 // IN1 on the ULN2003 driver 2 #define motorPin6 9 // IN2 on the ULN2003 driver 2 #define motorPin7 10 // IN3 on the ULN2003 driver 2 #define motorPin8 11 // IN4 on the ULN2003 driver 2 // Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48 AccelStepper stepper1 ( HALFSTEP , motorPin1 , motorPin3 , motorPin2 , motorPin4 ); AccelStepper stepper2 ( HALFSTEP , motorPin5 , motorPin7 , motorPin6 , motorPin8 ); // variables int turnSteps = 2100 ; // number of steps for a 90 degree turn int lineSteps = - 6600 ; //number of steps to drive straight int stepperSpeed = 1000 ; //speed of the stepper (steps per second) int steps1 = 0 ; // keep track of the step count for motor 1 int steps2 = 0 ; // keep track of the step count for motor 2 boolean turn1 = false ; //keep track if we are turning or going straight next boolean turn2 = false ; //keep track if we are turning or going straight next void setup () { delay ( 3000 ); //sime time to put the robot down after swithing it on stepper1 . setMaxSpeed ( 2000.0 ); stepper1 . move ( 1 ); // I found this necessary stepper1 . setSpeed ( stepperSpeed ); stepper2 . setMaxSpeed ( 2000.0 ); stepper2 . move (- 1 ); // I found this necessary stepper2 . setSpeed ( stepperSpeed ); } void loop () { if ( steps1 == 0 ) { int target = 0 ; if ( turn1 == true ) { target = turnSteps ; } else { target = lineSteps ; } stepper1 . move ( target ); stepper1 . setSpeed ( stepperSpeed ); turn1 = ! turn1 ; } if ( steps2 == 0 ) { int target = 0 ; if ( turn2 == true ) { target = turnSteps ; } else { target = - lineSteps ; } stepper2 . move ( target ); stepper2 . setSpeed ( stepperSpeed ); turn2 = ! turn2 ; } steps1 = stepper1 . distanceToGo (); steps2 = stepper2 . distanceToGo (); stepper1 . runSpeedToPosition (); stepper2 . runSpeedToPosition (); } Tested Programming Code: #define IN1 3 #define IN2 4 #define IN3 5 #define IN4 6 int Steps = 4096; //4096 or 768 int cstep = 0; void setup() { Serial.begin(9600); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { for(int x=0;x

  • Analog Joystick Interfacing with Arduino UNO. | TechKnowSkola

    Back Analog Joystick Interfacing with Arduino UNO. What is an Analog Joystick ? Analog joystick produces two voltages; one corresponding to position with respect to X-axis and another corresponding to the position with respect to Y-axis. The voltages produced depend on the position of the joystick. The Analog Joystick is similar to two potentiometers connected together, one for the vertical movement (Y-axis) and other for the horizontal movement (X-axis). The joystick also comes with a Select switch . It can be very handy for retro gaming, robot control or RC cars. Material Required: Material Quantity Arduino Uno 1 Analog Joystick 1 Jumper cables 5 Pinout Diagram: We need 5 connections to the joystick. The connection are : SW( Switch), Y, X, Voltage and Ground. “Y and X” are Analog and “Switch” is Digital. If you don’t need the switch then you can use only 4 pins. Circuit Diagram: This is circuit diagram of Analog Joystick module in Arduino. There five pins in analog Joystick Module VCC, GND, SW, X, and Y. X and Y are Analog pins and SW is digital. Key will be used when Joystick is pressed. Connect VCC of the module to +5v of Arduino and GND of the module to Arduino Ground. Now, connect X to Analog pin A0 and Y to Analog pin A1 of Arduino.. Tested Programming Code: This is code for interfacing analog Joystick Module in Arduino. First initialized the pin numbers of Joystick Module. In setup, the Serial Monitor is started at 9600 Baud and initialized Joystick pins as input. In the loop, read the button state and stored in a variable. Print the values to the Serial Monitor. const int joystick_x_pin = A2; const int joystick_y_pin = A1; void setup() { Serial.begin(9600); /* Define baud rate for serial communication */ } void loop() { int x_adc_val, y_adc_val; float x_volt, y_volt; x_adc_val = analogRead(joystick_x_pin); y_adc_val = analogRead(joystick_y_pin); x_volt = ( ( x_adc_val * 5.0 ) / 1023 ); /*Convert digital value to voltage */ y_volt = ( ( y_adc_val * 5.0 ) / 1023 ); /*Convert digital value to voltage */ Serial.print("X_Voltage = "); Serial.print(x_volt); Serial.print("\t"); Serial.print("Y_Voltage = "); Serial.println(y_volt); delay(100); } Checking Values on Serial Monitor: After Uploading The program Successfully into the Arduino Board , we Can Check the Values of X and Y Serial Monitor The Image of the Serial monitor Is shown Below : Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of sensor for correct working. 5. Connect the Wiper pin of potentiometer correctly. 6. Don’t lose hope if Joystick does not runs properly for the first time, try again. Conclusion: You can successfully display data on a the Serial Monitor of the Joystick in simplest way using Arduino. Many forms of data can be displayed on this display, whether it can be a data from sensor or anything else. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Interfacing GPS with Arduino (Neo-6M-001) | TechKnowSkola

    Back Interfacing GPS with Arduino (Neo-6M-001) What is a GPS Module? Every single location in the entire globe can be specified in terms of geographical coordinates. The geographical coordinate is a system which specifies any given location on the earth surface as latitude and longitude. There are devices which can read the geographical coordinates of a place with the help of the signals received from a number of satellites orbiting the earth. The system of satellites which helps in the positioning of a place is called Global Positioning System (GPS). The devices which can read the geographical coordinates of a place with the help of at least four GPS satellites are called GPS Receiver or simply GPS module. Specifications: • Build in 18X18mm GPS antenna • Anti-jamming technology • 5Hz position update rate • Operating temperature range: -40 TO 85°C • UART TTL socket • EEprom to store settings Material Required: Material Quantity Arduino Uno 1 GPS Module 1 Jumper cables 4 Working: GPS satellites circle the Earth twice a day in a precise orbit. Each satellite transmits a unique signal and orbital parameters that allow GPS devices to decode and compute the precise location of the satellite. GPS receivers use this information and trilateration to calculate a user's exact location. Essentially, the GPS receiver measures the distance to each satellite by the amount of time it takes to receive a transmitted signal. With distance measurements from a few more satellites, the receiver can determine a user's position and display it. To calculate your 2-D position (latitude and longitude) and track movement, a GPS receiver must be locked on to the signal of at least 3 satellites. With 4 or more satellites in view, the receiver can determine your 3-D position (latitude, longitude and altitude). Generally, a GPS receiver will track 8 or more satellites, but that depends on the time of day and where you are on the earth. Once your position has been determined, the GPS unit can calculate other information, such as: Speed Bearing Track Trip dist istance to destination Download and install required libraries for GPS to work in Arduino IDE (i) SoftwareSerial library (ii) TinyGPS library Click on the highlighted link to download the Library. Circuit Diagram: Connection of Arduino UNO and GPS module : Connect the four pins from UBLOX to an Arduino as follows: Ublox - Arduino GND - GND TX - Digital pin (D3) RX - Digital pin (D4) Vcc - 5Vdc Here, I suggest you to use external power supply to power the GPS module because minimum power requirement for GPS module to work is 3.3 V and Arduino is not capable of providing that much voltage. Tested Programming Code: #include #include SoftwareSerial mySerial(3,4); TinyGPS gps; void gpsdump(TinyGPS &gps); void printFloat(double f, int digits = 2); void setup() { // Oploen serial communications and wait for port to open: Serial.begin(9600); // set the data rate for the SoftwareSerial port mySerial.begin(9600); delay(1000); Serial.println("uBlox Neo 6M"); Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version()); Serial.println("by Mikal Hart"); Serial.println(); Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS)); Serial.println(); } void loop() // run over and over { bool newdata = false; unsigned long start = millis(); // Every 5 seconds we print an update while (millis() - start < 5000) { if (mySerial.available()) { char c = mySerial.read(); //Serial.print(c); // uncomment to see raw GPS data if (gps.encode(c)) { newdata = true; break; // uncomment to print new data immediately! } } } if (newdata) { Serial.println("Acquired Data"); Serial.println("-------------"); gpsdump(gps); Serial.println("-------------"); Serial.println(); } } void gpsdump(TinyGPS &gps) { long lat, lon; float flat, flon; unsigned long age, date, time, chars; int year; byte month, day, hour, minute, second, hundredths; unsigned short sentences, failed; gps.get_position(&lat, &lon, &age); Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); // On Arduino, GPS characters may be lost during lengthy Serial.print() // On Teensy, Serial prints to USB, which has large output buffering and // runs very fast, so it's not necessary to worry about missing 4800 // baud GPS characters. gps.f_get_position(&flat, &flon, &age); Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); gps.get_datetime(&date, &time, &age); Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): "); Serial.print(time); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age); Serial.print("Date: "); Serial.print(static_cast(month)); Serial.print("/"); Serial.print(static_cast(day)); Serial.print("/"); Serial.print(year); Serial.print(" Time: "); Serial.print(static_cast(hour+8)); Serial.print(":"); //Serial.print("UTC +08:00 Malaysia"); Serial.print(static_cast(minute)); Serial.print(":"); Serial.print(static_cast(second)); Serial.print("."); Serial.print(static_cast(hundredths)); Serial.print(" UTC +08:00 Malaysia"); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): "); Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed()); Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): "); printFloat(gps.f_course()); Serial.println(); Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): "); printFloat(gps.f_speed_mph()); Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): "); printFloat(gps.f_speed_kmph()); Serial.println(); gps.stats(&chars, &sentences, &failed); Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: "); Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed); } void printFloat(double number, int digits) { // Handle negative numbers if (number < 0.0) { Serial.print('-'); number = -number; } // Round correctly so that print(1.999, 2) prints as "2.00" double rounding = 0.5; for (uint8_t i=0; i 0) Serial.print("."); // Extract digits from the remainder one at a time while (digits-- > 0) { remainder *= 10.0; int toPrint = int(remainder); Serial.print(toPrint); remainder -= toPrint; }} Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of sensor for correct working.. Conclusion: You can successfully measure the flow rate and quantity of the water flowing through a pipe through a cross sectional area. This sensor can be deployed in many ways like water level automation system, water meter etc. Output: After you have successfully uploaded your source code, open your serial monitor. Serial monitor will display the data that your gps required. If you didn’t get anything, make sure your connection is correct and try it outside or near the window where it is easy to get the signal. Signal may not reach inside a building. Situation Screenshot: Serial Monitor (Ctrl+Shift+M) Reference URL GET IN TOUCH We'd love to hear from you Contact Us

  • Events & Competitions | TechKnowSkola - Igniting Innovation and Creativity

    Events & Competitions Stay at the forefront of STEAM, Robotics, IoT, Electronics, and much more with our exciting lineup of upcoming events, competitions, webinars, and conferences. We are dedicated to fostering a vibrant community of innovators, educators, and learners, providing a platform for knowledge exchange and creative exploration. What to Expect: 🌟 Upcoming Events 🎤 Insightful Webinars 🏆 Thrilling Competitions 📢 Stay Updated Upcoming Events No events at the moment

  • Referral Landing Page | TechKnowSkola

    Get a 15% on your order discount Applies to the lowest priced item in the cart. Apply reward when placing your first order. Get Reward

  • Bluetooth Controlled Car Using Arduino Uno. | TechKnowSkola

    Back Bluetooth Controlled Car Using Arduino Uno. Material Required: Material Quantity Arduino Uno 1 12V DC Motor /BO motor 2 Jumper cables 15 HC-05 Bluetooth Module 1 Breadboard 1 Breadboard 1 This tutorial will teach you how to create your own Bluetooth controlled car. So let’s get started. This will be a Bluetooth controlled car so for this project we will be using HC-05 Bluetooth module to receive the controlling data packets. We will also need an android app which will be sending the controlling data packets to the Bluetooth module. We will use a third party application ( https://play.google.com/store/apps/details?id=com.broxcode.arduinobluetoothfree&hl=en to download) for this purpose. Let's build the hardware (Body of the car) The car which we are building for this project will be a dual motor car. Two 12 v 200 rpm DC or BO motors. You can use a readymade chassis. Circuit Now let us build the circuit. CODE : Here we will use the direction of rotation of motors to control the direction of the car. Forward - Both motors move in forward direction. Backward - Both motors move in backward direction. Left - Left motor moves backwards and right motor moves forward. Right - Left motor moves forwards and right motor moves backward. Stop - Both motors stop Tested Programming Code: #include AF_DCMotor motor1(1); //motor1 is the left motor AF_DCMotor motor2(2); //motor2 is the right motor int val; void setup() { Serial.begin(9600); motor1.setSpeed(255); //motor speed is set motor2.setSpeed(255); Stop(); } void loop() { bt=Serial.read(); if(val=='1') //when the bluetooth module recieves 1 the car moves forward { forward(); } if(val=='2') //when the bluetooth module recieves 2 the car moves backward { backward(); } if(val=='3') //when the bluetooth module recieves 3 the car moves left { left(); } if(val=='4') //when the bluetooth module recieves 4 the car moves right { right(); } if(val=='5') //when the bluetooth module recieves 5 the car stops { Stop(); } } void forward() { motor1.run(FORWARD); motor2.run(FORWARD); } void backward() { motor1.run(BACKWARD); motor2.run(BACKWARD); } void left() { motor1.run(BACKWARD); motor2.run(FORWARD); } void right() { motor1.run(FORWARD); motor2.run(BACKWARD); } void Stop() { motor1.run(RELEASE); motor2.run(RELEASE); } Precautions: 1. Double check the connections before powering on the circuit. 2. Don’t use loose jumper cables. 3. Check whether proper board is selected from Arduino IDE. 4. Ensure proper placement of Bluetooth and Motor driver for correct working. 5. Don’t lose hope if it does not run properly for the first time, try again. Reference URL GET IN TOUCH We'd love to hear from you Contact Us

bottom of page