Next Page: 10000

          Digital Clock With Automatic Rotation of LED Display      Cache   Translate Page   Web Page Cache   
This project is about a digital clock with automatic rotation of 7-Seg LED display.This clock can be rotated in any position keeping the digits readable even upside down or in a mirror image!!It is controlled by an Arduino and driven by accelerometers to find out the correct position in 3D coordinat...
By: lagsilva

Continue Reading »
          PAPER HUNGRY ROBOT - Pringles Recycle Arduino Robot      Cache   Translate Page   Web Page Cache   
This is another version of Hungry Robot which I built in 2018. You can make this robot without 3d printer. All you need to do is just buying a can of Pringles, a servo motor, a proximity sensor, an arduino and some of tools. You can download all the files from the drawing to the source code for it. ...
By: HappyThingsMaker

Continue Reading »
          How to Control an LED using a Raspberry Pi GPIO      Cache   Translate Page   Web Page Cache   

One of the vital features of the Pi is its hardware pinouts. If you have never done any electronics before, then the Pi is a great place to start. Or maybe you have used Arduino in the past; the Pi, with its increased CPU and RAM over the Arduino, opens up many more possibilities for fun projects. Here we will

The post How to Control an LED using a Raspberry Pi GPIO appeared first on Online Shouter.


          Design a box cover      Cache   Translate Page   Web Page Cache   
I need to design a sticker to cover the top of an orange box (top dimensions: 30x20cm). The box contains an educational kit including an Arduino UNO MicroController, a 4 Wheel DIY car body with wheels, motors and sensors for the students to make an automated car. The title of the box is "Arduino Smart Car Kit". I need this title on the sticker along with my logo (attached). I also need you to design a related image to go on the box. I've attached a picture of a similar box so you can get an idea. I also attached images of the items inside it so you can use them to make the picture (if needed or just for inspiration). Please be creative don't copy images from somewhere else. (Prize: 30)
          #10: Programming Arduino: Getting Started with Sketches, Second Edition      Cache   Translate Page   Web Page Cache   
Programming Arduino
Programming Arduino: Getting Started with Sketches, Second Edition
Simon Monk
(49)

Buy new: CDN$ 18.95 CDN$ 18.76
63 used & new from CDN$ 5.06

(Visit the Bestsellers in Programming list for authoritative information on this product's current rank.)
          Arduino Fest at miLKlabs Limerick - register now      Cache   Translate Page   Web Page Cache   
When: Saturday 27th August, from 10am to 5pm Where: miLKLabs, Franciscan friary, Lower Henry Street, Limerick Hosted by: Members of miLKLabsCost: €10 (for non-members)Limited to 20 participants (Pre-booking mandatory) What is Arduino? Arduino is an open-source electronics prototyping platform based...
          Pozvánka na večerní školení Arduino a BadUSB      Cache   Translate Page   Web Page Cache   
none
          Commenti su Aggiorniamo ESPertino con l’OTA di Stefano Lovati      Cache   Translate Page   Web Page Cache   
Io ho approfondito questo discorso dei due ambienti di sviluppo Arduino per ESPertino (plugin ESPertino e plugin ufficiale Espressif Systems) sia nel Corso Embedded che nel mio primo Webinar associato allo stesso. Farò comunque presente la richiesta alla redazione, penso che il punto più corretto per spiegare l'esistenza di questi due plugin sia l'articolo in cui viene presentata la board ESPertino. Per quanto riguarda l'halt non so a cosa sia dovuto, proverò a verificare se si presenta anche sulla mia board.
          Comment on KOOKYE Mini Servo Motor 360 Degree Continuous Rotation by amber      Cache   Translate Page   Web Page Cache   
Hi,you can try the following sketch, it should be OK. #include <Servo.h> Servo servo1; void setup() { Serial.begin(115200); Serial.println(":-]"); delay(300); } void loop() { servo1.attach(9); //*attaches the servo on pin 9 to the servo object servo1.writeMicroseconds(1300); //* 1300 between [1000,2000],the servo spin in one direction delay(3000); //*delay 3s servo1.detach(); //*disable the servo with arduino delay(3000); servo1.attach(9); //*attaches the servo on pin 9 to the servo object servo1.writeMicroseconds(1700); //*1700 between [1000,2000],the servo spin in another direction delay(3000); }
          Comment on KOOKYE Mini Servo Motor 360 Degree Continuous Rotation by JesusTM      Cache   Translate Page   Web Page Cache   
Hi, reciently i bought 10 KOOKYE Mini Servo Motor 360 Degree Continuous Rotation, my problem is that i cant anticlockwise, i control the servos with arduino, with 1ms it go clockwise, with 1.5ms it stop, but with 2ms the motor sounds weird but not run in any way Thanks for help.
          #8: Programming Arduino: Getting Started with Sketches, Second Edition      Cache   Translate Page   Web Page Cache   
Programming Arduino
Programming Arduino: Getting Started with Sketches, Second Edition
Simon Monk
(49)

Buy new: CDN$ 18.95 CDN$ 18.76
61 used & new from CDN$ 5.00

(Visit the Bestsellers in Languages & Tools list for authoritative information on this product's current rank.)
          دیدگاه‌ها برای آموزش ساخت کلید جادویی برد آردوینو Arduino و ماژول TTP223 تاچ خازنی با پریسا پوربلورچیان      Cache   Translate Page   Web Page Cache   
سلام مجدد بسیار عالی می‌توانید تجربه خود را از همین طریق با دیگر کاربران به اشتراک بگذارید.
          دیدگاه‌ها برای آموزش ساخت کلید جادویی برد آردوینو Arduino و ماژول TTP223 تاچ خازنی با hameds1      Cache   Translate Page   Web Page Cache   
ممنون. با استفاده از کتابخانه Bounce حل شد
          Comment on IBM IoT and Arduino by Soumen Saha      Cache   Translate Page   Web Page Cache   
To include a library in Arduino you can open the IDE and click to the "Sketch" menu and then Include Library > Manage Libraries.
          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          Skid Steer Mower Overshooting pivot turns      Cache   Translate Page   Web Page Cache   

@rmackay9, you once said that if there were any enhancements to ArduRover that would help a mower application to let you know. It would be great for me if a gpio could be set to go high or low when the rover is outside a polygonal geofence. That could be used to kill the engine. I plan to attempt to do this with an arduino or something hanging on the MAVlink bus but it would be a nice feature to be built in imho. I have areas where the zero turn mower will be operating that if a steering actuator linkage broke (my biggest mechanical worry), the mower couldn’t hurt anyone but it could damage itself or drive off into a pond! Really, the chances of a runaway condition is probably small since if one actuator failed, the other would likely still be working and the mower would just go in circles forever. But, the geofence kill feature would be nice I think.

While I am wishing, what would be even better would be a master interlock or kill output that was configurable. If in Mission Planner you could have check boxes for various conditions that all have to be met for the interlock to be active it would be awesome.

I’m sure there are higher priorities but just thinking…

Thanks for all you do!


          Clé USB Programmez + carte ATTiny85 offerte      Cache   Translate Page   Web Page Cache   
Description du produit: 

Offert ! Mini carte de prototypage, compatible Arduino. Photo non contractuelle

Offre Réservée à la France métropolitaine

Les magazines Programmez! du n° 100 au n° en cours sur une belle clé USB 4 Go à l'effigie de votre magazine préféré.

Expédition sous 10 jours.

Prix : 34.99EUR

          Comment on KOOKYE Mini Servo Motor 360 Degree Continuous Rotation by amber      Cache   Translate Page   Web Page Cache   
Hi,you can try the following sketch, it should be OK. #include Servo servo1; void setup() { Serial.begin(115200); Serial.println(“:-]”); delay(300); } void loop() { servo1.attach(9); //*attaches the servo on pin 9 to the servo object servo1.writeMicroseconds(1300); //* 1300 between [1000,2000],the servo spin in one direction delay(3000); //*delay 3s servo1.detach(); //*disable the servo with arduino delay(3000); servo1.attach(9); //*attaches the servo on pin 9 to the servo object servo1.writeMicroseconds(1700); //*1700 between [1000,2000],the servo spin in another direction delay(3000); }
          #10: Programming Arduino: Getting Started with Sketches, Second Edition      Cache   Translate Page   Web Page Cache   
Programming Arduino
Programming Arduino: Getting Started with Sketches, Second Edition
Simon Monk
(49)

Buy new: CDN$ 18.95 CDN$ 18.76
63 used & new from CDN$ 5.00

(Visit the Bestsellers in Languages & Tools list for authoritative information on this product's current rank.)
          How to delete COM port to make the plug and play instant, no more delay      Cache   Translate Page   Web Page Cache   
Speed Arduino Boot
          Arduino(nf24l01+) + android things(nrf24l01+) application      Cache   Translate Page   Web Page Cache   
1. The "mesh network" in the following web site will be canceled. https://github.com/lemariva/nrf24things 2. It will be made compatible with the arduino code that I offer in addition to the Android things application... (Budget: $10 - $30 USD, Jobs: Android, Arduino, Microcontroller, Mobile App Development, Software Architecture)
          KKTC Başbakanı Tufan Erhürman DAÜ’yü ziyaret etti      Cache   Translate Page   Web Page Cache   

Kuzey Kıbrıs Türk Cumhuriyeti (KKTC) Başbakanı Tufan Erhürman, Doğu Akdeniz Üniversitesi'ni ziyaret ederek öğrencilerle bir araya geldi.

Başbakanlığa bağlı Gençlik Dairesi Müdürlüğü koordinasyonu ile Doğu Akdeniz Üniversitesi (DAÜ) iş birliğinde KKTC devlet okullarında eğitim gören lise öğrencilerine yönelik gerçekleştirilecek olan “Fırsat Eşitliği Projesi” kapsamında üniversiteyi ziyaret eden Erhürman, toplantı öncesinde DAÜ Rektörü Prof. Dr. Necdet Osam ile bir araya gelerek okulun güncel durumu hakkında bilgi aldı.

Ardından öğrencilerle buluşan Erhürman toplantıda yaptığı konuşmada, "Kendimi evimde gibi hissediyorum. Böyle bir proje içinde bulunmaktan dolayı çok mutluyum. Hedefimiz kamu ve özel okullar arasındaki imkanların eşit düzeye gelmesini sağlamak. Lise öğrencilerinin böyle bir üniversitede yaz döneminde çeşitli branşlarda eğitim almaları kendilerine de yol gösterecektir" dedi.

Toplantıda konuşan DAÜ Rektörü Prof. Dr. Necdet Osam, söz konusu projenin son derece önemli olduğuna inandığını dile getirerek üniversitenin her zaman en iyiyi yapmayı kendine hedef edindiğini söyledi. Projenin faydalı geçeceğine inandığını aktaran Prof. Dr. Osam, tüm öğrencilere başarılar dilerken, çalışmada yer alan tüm öğretim üyelerine teşekkürlerini sundu. DAÜ Akademik İşler’den Sorumlu Rektör Yardımcısı Prof. Dr. Halit Tanju Besler, kurs içerikleri hakkında bilgiler vererek gerçekleştirilecek olan kursların öğrenciler açısından yararlı olacağına inandığını aktardı.

LİSE ÖĞRENCİLERİNE EĞİTİMLER VERİLECEK

KKTC devlet okullarında öğrenim gören ve Gençlik Dairesi tarafından belirlenen kriterlere göre seçilen lise öğrencilerine yönelik çeşitli branşlarda ücretsiz eğitim kursları verilecek. Proje kapsamında yaz dönemi boyunca öğrencilere İnsansı Robot Programlama ve Kontrol, Temel Robot Tasarım ve Uygulama, Elektromobil Araçlar, Astronomiye Giriş, Mikrodenetleyici Programlama (Arduino), Bilgisayar Donanım ve Uygulamaları, Rhino, AutoCAD, Bina Bilgi Modelleme, Coğrafik Bilgi Sistemleri, HTML ile Web Tasarımı konularında eğitimler verilecek. DAÜ öğretim üyeleri tarafından verilecek olan eğitim kursları 9 Temmuz – 1 Eylül 2018 tarihleri arasında üniversitede gerçekleştirilecek.

The post KKTC Başbakanı Tufan Erhürman DAÜ’yü ziyaret etti appeared first on Sonsöz Gazetesi • Haberler, Güncel Haberler • Ankara Yerel Gazete.


          Firmware developer needed      Cache   Translate Page   Web Page Cache   
I'm looking someone who have excellent experience with firmware programming . We can discuss more details of the project through chatting. (Budget: $20 - $100 USD, Jobs: Arduino, C Programming, Electronics, Microcontroller)
          Comentario en Ejemplos Arduino con Arrays y Strings por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Ejemplos Arduino con Arrays y Strings […]
          Comentario en Arrays y Strings por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Arrays y Strings […]
          Comentario en Estructuras Propias de Arduino por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Estructuras propias de Arduino […]
          Comentario en Debug con Arduino por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Debug con Arduino: https://aprendiendoarduino.wordpress.com/2017/07/13/debug-con-arduino/ […]
          Comentario en Tratamiento Avanzado de Strings por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Tratamiento Avanzado de Strings: https://aprendiendoarduino.wordpress.com/2018/07/09/tratamiento-avanzado-de-strings-2/ […]
          i need a PCB and Arduino expert      Cache   Translate Page   Web Page Cache   
Assembling and programming hardware which have the possibility to change CID number on any SD card. and more details will be made available (Budget: $10 - $30 AUD, Jobs: Arduino, C Programming, Electrical Engineering, Electronics, Microcontroller)
          Arduino-Treiber unter Windows installieren      Cache   Translate Page   Web Page Cache   
Um mit Ihrem Arduino-Board programmieren zu können, müssen Sie zunächst die Windows-Treiber installieren. Wir zeigen Ihnen, wie es funktioniert. … ... mehr
          How to Communicate with the PC using HID Protocol on a Leonardo      Cache   Translate Page   Web Page Cache   
Using HID protocol on an Arduino Leonardo
          Arduinoで楽しむ鉄道模型 ~簡単なプログラムで信号機や踏切遮断機を動かす!~      Cache   Translate Page   Web Page Cache   
Arduinoはシングルボードのコンピュータで,デジタル・アナログの入出力を行える端子を備え,LEDやスイッチ,センサなどを制御できます。しかもプログラミングが簡単で,マイコン初学者でも取りかかりやすいのが特長です。本書は,鉄道模型をもっと楽しみたいけど,マイコンの知識はゼロ。だけど,信号機や踏切を本物そっくりに動かしたい。そんなチャレンジ精神旺盛な人に読んでもらいたい,入門以前の鉄道模型プログラム本です。
          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          24 images to my mobile app navigation menu      Cache   Translate Page   Web Page Cache   
Following the sample in the attachments: I need 24 images relative to my categories to put inside my navigation menu on my ecommerce. The categories topics are: 1: Microcontrolers, Modules 2: Arduino,... (Budget: $30 - $250 USD, Jobs: Graphic Design, Photoshop, Website Design)
          Galpão comercial para locação, Recanto Elizabete, Bragança Paulista.      Cache   Translate Page   Web Page Cache   
10000
Galpão Comercial venha conhecer! Itens de acabamento a serem finalizados: elétrica, hidráulica, pisos, azulejos, pintura, portas, janelas, laje do terraço, forro interno e outros detalhes de estética. Acesso fácil, da Rodovia Capitão Barduino. Ao...
5 banheiros 950 m2 10 BRL/m² terraço
Wed, 11 Jul 2018 09:30:20 -0400
          Mechatronics Intern - SKA - Pittsburgh, PA      Cache   Translate Page   Web Page Cache   
Embedded programming ability such as Arduino, Atmel Studio, Assembly, etc. In this role, you will work remotely and in-person with SKA’s mechatronic design and...
From SKA - Thu, 28 Jun 2018 11:44:58 GMT - View all Pittsburgh, PA jobs
          Arduino goes to summer school in Costa Rica!      Cache   Translate Page   Web Page Cache   
Back in May, the Arduino team ran a physical computing workshop as part of the summer school program organized by the Copenhagen Institute of Interaction Design. Each workshop was taught in the context of the United Nations Sustainable Development Goals. The one-week long class focused on designing physical and interactive objects that can help kids […]
          Galpão comercial para locação, Recanto Elizabete, Bragança Paulista.      Cache   Translate Page   Web Page Cache   
10000
Galpão Comercial venha conhecer! Itens de acabamento a serem finalizados: elétrica, hidráulica, pisos, azulejos, pintura, portas, janelas, laje do terraço, forro interno e outros detalhes de estética. Acesso fácil, da Rodovia Capitão Barduino. Ao...
5 banheiros 950 m2 10 BRL/m² terraço
Wed, 11 Jul 2018 09:30:20 -0400
          AD9850 signal generator – arrived, built, tested      Cache   Translate Page   Web Page Cache   
The replacement AD9850 signal generator has arrived. It’s now been installed into the Arduino based signal generator build and is shown being tested.
          Comentario en Alimentación Arduino por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Limitaciones de corriente en Arduino UNO: https://aprendiendoarduino.wordpress.com/2016/11/09/alimentacion-arduino/ […]
          Comentario en Memoria Arduino por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Ejercicio 16: https://github.com/jecrespo/aprendiendoarduino-Curso_Programacion_Arduino/tree/master/Ejercicio16-Strings_Avanzado comprobar memoria RAM libre con https://aprendiendoarduino.wordpress.com/2017/09/05/memoria-arduino-2/ […]
          Comentario en Crear Librerias Arduino por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Crear Librerías […]
          Comentario en Clases y Objetos por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Clases y Objetos […]
          Comentario en Práctica: Funciones Definidas de Usuario por Saber más Arduino Avanzado 2018 | Aprendiendo Arduino      Cache   Translate Page   Web Page Cache   
[…] Práctica Funciones Definidas por Usuario […]
          Novel lathe control method with Arduino      Cache   Translate Page   Web Page Cache   
If you want to work with round parts, a lathe is the tool to have, but takes some time to master. A full CNC version takes even more time and skill to understand, but mechanical engineer “Wade’o Design” has come up with something in between. Instead of running his machine with code directly, his device […]
          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          Galileo aurait adoré la carte Arduino      Cache   Translate Page   Web Page Cache   

« Tous les corps tombent sur la Terre de la même façon, les plus lourds comme les plus légers ».

- Ressources pédagogiques : « pour aller moins loin » / featured
          Los padres de los niños de Tailandia lloran al verlos por primera vez tras el rescate      Cache   Translate Page   Web Page Cache   
Vistiendo tapabocas y batas para el hospital, y saludando con la mano a los miembros de la familia a través de un cristal protector, los futbolistas tailandeses liberados finalmente pudieron finalmente tener una reunión, o algo así. MIRA: La meditación fue clave para la supervivencia de los niños en la cueva de Tailandia, dice experto
          Comment on How To Make Arduino Line Follower Robot? by Ravi      Cache   Translate Page   Web Page Cache   
12V
          Comment on Heartbeat Sensor using Arduino (Heart Rate Monitor) by CJ      Cache   Translate Page   Web Page Cache   
WHY DID U CHOOSE FIRST OP AMP`S AMPLIFCATION FACTOR IS 1001? IS THERE ANY SPECIFIC REASON?
          Comment on How To Make Arduino Line Follower Robot? by Vidhyotha      Cache   Translate Page   Web Page Cache   
How many volts motors did u use?
          Comment on Control a Relay From Anywhere in the World using ESP8266 by Miguel      Cache   Translate Page   Web Page Cache   
Hi, I can config the Arduino like AP for take the local wifi "SSID" "PASSWORD" data?. Best Regards
          Sensor Data Processing on AWS using IoT Core, Kinesis and ElastiCache      Cache   Translate Page   Web Page Cache   

This blog post is part of my AWS series:

Introduction

Internet of Things (IoT) became a hot topic in the recent years. Companies are forecasting billions of connected devices in the years to come. IoT applications have different characteristics than traditional software projects. Applications operate on constrained hardware, network connections are unreliable, and the data coming from many different sensors need to be available in near real-time.

With the rise of cheap and available microprocessors and microcontrollers like the Rasperry Pi and Arduino products, the barrier of entry for working on IoT products has been lowered significantly. But also the software and development toolstack matured.

In December 2015 AWS IoT became generally available. AWS IoT is a collection of products to manage and connect IoT devices to the cloud. Its IoT Core product acts as the entry point. IoT Core accepts data via MQTT and then processes and forwards it to other AWS services according to preconfigured rules.

In this blog post we want to build an exemplary sensor data backend powered by IoT Core, Kinesis, Lambda, ElastiCache, Elastic Beanstalk, and S3. The goal is to accept sensor data, persist it in an S3 bucket, and at the same time display a live feed on the web. The architecture should be extensible so we can add more functionality like analytics or notifications later.

The remainder of the post is structured as follows. First we will present the architecture overview. Afterwards we are going to deep dive into the implementation. We will omit going into details about the VPC and networking part as well as the Elastic Beanstalk deployment as this has been discussed in previous posts already. We are closing the blog post discussing the main findings.

Architecture

architecture overview#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

IoT Core acts as the MQTT message broker. It uses topics to route messages from publishers to subscribers. Whenever a message is published to a topic, all subscribers will be notified about the message. IoT core allows us to send messages to other AWS services efficiently using rules. A rule corresponds to a SQL select statement which defines when it should be triggered, e.g. for all messages from a certain topic.

Each rule can have multiple actions associated with it. An action defines what should happen to the selected messages. There are many different actions supported but we are only going to use the Firehose and Kinesis actions in the course of this post.

The Firehose action forwards the messages to a Kinesis Firehose delivery stream. Firehose collects messages for a configured amount of time or until a certain batch size is reached and persists it to the specified location. In our case we would like to persist the messages as small batches in an S3 bucket.

A Kinesis data stream is used to decouple the processing logic from the data ingestion. This enables us to asynchronously consume messages from the stream by multiple independent consumers. As the message offset can be managed individually by each consumer we can also decide to replay certain messages in case of downstream failure.

The main data processing is happening within our Lambda function. A convenient way to process a Kinesis data stream with a Lambda function is to configure the stream as an event source. We will use this stream-based model, because Lambda polls the stream for you and when it detects new records, invokes your function, passing the new records as a parameter. It is possible to add more consumers to the data stream, e.g., an Akka Streams application that allows more granular control of the message digestion.

The Lambda function will update a Redis instance managed by ElastiCache. In our example we will increment a message counter for each record, as well as storing the last message received. We are using Redis' Pub/Sub functionality to notify our web application, which updates all the clients through a WebSocket connection.

We are going to use the MQTT test client built into IoT core for publishing messages to our topic. As an outlook please find an animation of the final result below. Let's look into the implementation step by step in the next section.

demo#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

Implementation

Development Tool Stack

To develop the solution we are using the following tools:

  • Terraform v0.11.7
  • SBT 1.0.4
  • Scala 2.12.6
  • IntelliJ + Scala Plugin + Terraform Plugin

The source code is available on GitHub. Now let's look into the implementation details of each component.

IoT Core

iot core#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

When working with IoT core there is no setup required. Every AWS account is able to use the MQTT broker as a fully managed service out of the box. So the only thing we need to do is to configure our topic rule and the respective actions forwarding messages to Kinesis and Firehose.

resource "aws_iot_topic_rule" "rule" {
  name        = "${local.project_name}Kinesis"
  description = "Kinesis Rule"
  enabled     = true
  sql         = "SELECT * FROM 'topic/${local.iot_topic}'"
  sql_version = "2015-10-08"

  kinesis {
    role_arn    = "${aws_iam_role.iot.arn}"
    stream_name = "${aws_kinesis_stream.sensors.name}"
    partition_key = "$${newuuid()}"
  }

  firehose {
    delivery_stream_name = "${aws_kinesis_firehose_delivery_stream.sensors.name}"
    role_arn = "${aws_iam_role.iot.arn}"
  }
}

The rule will be triggered for all messages in the topic/sensors topic. Using newuuid() as a partition key for Kinesis is fine for our demo as we will anyway have only one shard. In a productive scenario you should think about choosing the partition key in a way that fits your requirements.

The execution roles used need to allow the kinesis:PutRecord and firehose:PutRecord action, respectively. Here we are using the same role twice but I recommend to setup two roles with the least possible permissions.

Now that we have the rule configured, let's create the Firehose delivery stream and the Kinesis data stream next.

Firehose Delivery Stream

firehose delivery stream#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

To setup the Firehose delivery stream we specify the destination type (s3) and configure it accordingly. As we created S3 buckets multiple times throughout this series we will omit the bucket resource here. The two parameters buffer_size (MB) and buffer_interval (s) control how long we are waiting for new data to arrive before persisting a partition to S3.

resource "aws_kinesis_firehose_delivery_stream" "sensors" {
  name        = "${local.project_name}-s3"
  destination = "s3"

  s3_configuration {
    role_arn        = "${aws_iam_role.firehose.arn}"
    bucket_arn      = "${aws_s3_bucket.sensor_storage.arn}"
    buffer_size     = 5
    buffer_interval = 60
  }
}

The execution role needs to have permissions to access the S3 bucket as well as the Kinesis stream. Please find the policy document used below.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:PutObject"
      ],
      "Resource": [
        "${aws_s3_bucket.sensor_storage.arn}",
        "${aws_s3_bucket.sensor_storage.arn}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "kinesis:DescribeStream",
        "kinesis:GetShardIterator",
        "kinesis:GetRecords"
      ],
      "Resource": "${aws_kinesis_stream.sensors.arn}"
    }
  ]
}

This should have our raw data persistence layer covered. All incoming messages will be dumped to S3. Let's tend to the Kinesis data stream next which is important for the data processing.

Kinesis Data Stream

kinesis data stream#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

The Kinesis data stream will have only one shard and a retention period of 24 hours. Each shard supports a certain read and write throughput, limited in the number and size of requests per time. You can scale out by adding more shards to your stream and choosing an appropriate partition key. We will keep the data for 24 hours, which is included in the base price.

resource "aws_kinesis_stream" "sensors" {
  name             = "${local.project_name}"
  shard_count      = 1
  retention_period = 24
}

Next, let's take a closer look at our Lambda function.

Lambda

lambda#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

By now you should already be familiar with creating Lambda handlers. This time we will make use of an additional library which will allow AWS to handle the deserialization of the KinesisEvent input automatically: aws-lambda-java-events. We also have to include amazon-kinesis-client and aws-java-sdk-kinesis.

The connection to Redis is done using the net.debasishg.redisclient package. Let's look at the code first and then go through it step by step.

class Handler extends RequestHandler[KinesisEvent, Void] {

  val port = System.getenv("redis_port").toInt
  val url = System.getenv("redis_url")

  override def handleRequest(input: KinesisEvent, context: Context): Void = {
    val logger = context.getLogger
    val redis = new RedisClient(url, port)
    val recordsWritten = input.getRecords.asScala.map { record =>
      val data = new String(record.getKinesis.getData.array())
      redis.set("sensorLatest", data)
      redis.incr("sensorCount")
    }
    redis.publish(
      channel = "sensors",
      msg = "updated"
    )
    val successAndFailure = recordsWritten.groupBy(_.isDefined).mapValues(_.length)
    logger.log(s"Successfully processed: ${successAndFailure.getOrElse(true, 0)}")
    logger.log(s"Failed: ${successAndFailure.getOrElse(false, 0)}")
    null
  }

}

Here's what happens:

  • Read $redis_url and $redis_port environment variables (error handling omitted)
  • For each incoming KinesisEvent, the Lambda function will be invoked. The event contains a list of records since the last invocation. We will see later how we can control this part.
  • Connect to the ElastiCache Redis instance. It might make sense to reuse the connection by setting it up outside of the request handling method. I am not sure about the thread safety and how AWS Lambda handles the object creation.
  • For each message update the latest message value and increase the counter. It would be more efficient to aggregate all records locally within the Lambda and update Redis with the results of the whole batch but I was too lazy to do that.
  • Publish to the sensors channel that new data has arrived so all clients can be notified.

As usual we have to define our Lambda resource. The Redis connection details will be passed via environment variables.

resource "aws_lambda_function" "kinesis" {
  function_name    = "${local.project_name}"
  filename         = "${local.lambda_artifact}"
  source_code_hash = "${base64sha256(file(local.lambda_artifact))}"
  handler          = "de.frosner.aws.iot.Handler"
  runtime          = "java8"
  role             = "${aws_iam_role.lambda_exec.arn}"
  memory_size      = 1024
  timeout          = 5

  environment {
    variables {
      redis_port = "${aws_elasticache_cluster.sensors.port}"
      redis_url  = "${aws_elasticache_cluster.sensors.cache_nodes.0.address}"
    }
  }
}

Last but not least we tell Lambda to listen to Kinesis events, making it poll for new messages. We choose the LATEST shard iterator, which corresponds to moving the offset always to the latest data, consuming every message only once. We could also decide to consume all records (TRIM_HORIZON) or starting from a given timestamp (AT_TIMESTAMP).

The batch size controls the maximum amount of messages processed by one Lambda call. Increasing it has a positive effect on the throughput, while on the other hand a small batch size might lead to better latency. Here's the Terraform resource definition for our event source mapping.

resource "aws_lambda_event_source_mapping" "event_source_mapping" {
  batch_size        = 10
  event_source_arn  = "${aws_kinesis_stream.sensors.arn}"
  enabled           = true
  function_name     = "${aws_lambda_function.kinesis.id}"
  starting_position = "LATEST"
}

In order to push data to the web layer, we will create our ElastiCache Redis instance in the following section.

ElastiCache Redis

redis#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

We will use a single cache.t2.micro instance running Redis 4.0. Similar to RDS we can also pass the apply_immediately flag to force updates even if outside the maintenance window.

resource "aws_elasticache_cluster" "sensors" {
  cluster_id           = "${local.project_name}"
  engine               = "redis"
  node_type            = "cache.t2.micro"
  num_cache_nodes      = 1
  parameter_group_name = "default.redis4.0"
  port                 = "${var.redis_port}"
  security_group_ids   = ["${aws_security_group.all.id}"]
  subnet_group_name    = "${aws_elasticache_subnet_group.private.name}"
  apply_immediately    = true
}

That's it! What is left is only the Elastic Beanstalk application for the UI.

Elastic Beanstalk Web UI

elastic beanstalk web ui#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

The Elastic Beanstalk application consists of a frontend and a backend. The frontend is in form of a single HTML file with JavaScript and CSS. Nothing fancy going on there. The backend is written in Scala and utilizes the same Redis library we already used in the Lambda function, as well as Akka HTTP for serving the static files and handling the WebSocket connections.

Frontend

The frontend will feature three outputs: The message count, the last message, and when it received the last update from the server. Below you will find a screenshot of the UI and the HTML code.

frontend#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

<html>
<head>
    <title>Sensor Data Example</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="http://fargo.io/code/jquery-1.9.1.min.js"></script>
    <link href="http://fargo.io/code/ubuntuFont.css" rel="stylesheet" type="text/css">
    <script src="main.js"></script>
</head>
<body>
<div>
    <p>Message count: <span id="messageCount"></span></p>
    <p>Last message: <span id="lastMessage"></span></p>
    <p>Last update: <span id="lastUpdate"></span></p>
</div>
<script>
$(document).ready(WebSocketTest);
</script>
</body>
</html>

The JavaScript part is also rather straightforward. We will use the built-in WebSocket support and provide handlers for onopen, onmessage, and onclose events. The onmessage event will parse the data received and fill the appropriate text fields. Note that we have to build the WebSocket URL using window.location, because it has to be an absolute URL in all the browsers I know.

var loc = window.location, protocol;
if (loc.protocol === "https:") {
    protocol = "wss:";
} else {
    protocol = "ws:";
}
var socketUrl = protocol + "//" + loc.host + loc.pathname + "ws";

function WebSocketTest() {
  if ("WebSocket" in window) {
    console.log("Connecting to " + socketUrl);
    var ws = new WebSocket(socketUrl);

    ws.onopen = function() {
      console.log("Connection established");
    };

    ws.onmessage = function (evt) {
      var msg = JSON.parse(evt.data);
      console.log("Message received: " + msg);
      $("#lastUpdate").text(new Date());
      $("#lastMessage").text(msg.latest);
      $("#messageCount").text(msg.count);
    };

    ws.onclose = function() {
      console.log("Connection closed");
    };
  } else {
     console.error("WebSocket not supported by your browser!");
  }
}

Backend

The backend consists of an Akka HTTP web server and two Redis connections. We have to use two connections here because Redis does not allow using the same connection for Pub/Sub and normal key value operations at the same time.

Let's look into the code. As always you need to have an actor system, actor materializer, and execution context if required. We are going to omit this for brevity reasons. Setting up the HTTP server with WebSocket support is illustrated in the following listing. We are routing two paths, one for the WebSocket connection and one for the static HTML file, which contains all JavaScript and CSS inline. We ignore all incoming messages and will forward messages coming from Redis to all clients. Both interface and port will be passed by Elastic Beanstalk.

val route =
  path("ws") {
    extractUpgradeToWebSocket { upgrade =>
      complete(upgrade.handleMessagesWithSinkSource(Sink.ignore, redisSource))
    }
  } ~ path("") {
    getFromResource("index.html")
  }

val interface = Option(System.getenv("INTERFACE")).getOrElse("0.0.0.0")
val port = System.getenv("PORT").toInt
val bindingFuture = Http().bindAndHandle(route, interface, port)

The next task is to define the Redis source. The Redis Pub/Sub API requires a callback function that is invoked for every message in the subscribed channel. This is not compatible with Akka Streams out of the box, so we have to use a little trick to transform our Redis messages to a Source object. The following listing illustrates the Redis source creation as well as the channel subscription.

val redis_port = System.getenv("redis_port").toInt
val redis_url = System.getenv("redis_url")
val redis = new RedisClient(redis_url, redis_port)
val redisPubSub = new RedisClient(redis_url, redis_port)

val (redisActor, redisSource) =
  Source.actorRef[String](1000, OverflowStrategy.dropTail)
    .map(s => TextMessage(s))
    .toMat(BroadcastHub.sink[TextMessage])(Keep.both)
    .run()

redisPubSub.subscribe("sensors") {
  case M(channel, message) =>
    val latest = redis.get("sensorLatest")
    val count = redis.get("sensorCount")
    redisActor ! s"""{ "latest": "${latest.getOrElse("0")}", "count": "${count.getOrElse("0")}" }"""
  case S(channel, noSubscribed) => println(s"Successfully subscribed to channel $channel")
  case other => println(s"Ignoring message from redis: $other")
}

Creating the Redis source is done using a combination of Source.actorRef and the BroadcastHub.sink. The source actor will emit every message it receives to the stream. We configure a buffer size of 1000 messages and discard the youngest element to make room for a new one in case of an overflow. Inside the subscription callback we can query Redis for the latest data and then send a JSON object to the Redis actor.

The broadcast hub sink emits a source we can plug into our WebSocket sink to generate the flow that will handle incoming WebSocket messages. As we need both, the actor and the source, we will keep both materialized values.

Now we can build our fat jar and upload it to S3. As it is basically the same procedure as in the Elastic Beanstalk post we are not going to go into detail at this point. Let's look at the Terraform resources next.

Terraform

First, we have to reference the fat jar inside the S3 bucket. Because the bucket has to exist before we can publish the jar using SBT, the Terraform deployment needs to happen in two stages. First we create only the artifact bucket and run sbt webui/publish, then we deploy the remaining infrastructure.

resource "aws_s3_bucket" "webui" {
  bucket        = "${local.project_name}-webui-artifacts"
  acl           = "private"
  force_destroy = true
}

data "aws_s3_bucket_object" "application-jar" {
  bucket = "${aws_s3_bucket.webui.id}"
  key    = "de/frosner/${local.webui_project_name}_2.12/${var.webui_version}/${local.webui_project_name}_2.12-${var.webui_version}-assembly.jar"
}

Next we can define the Elastic Beanstalk application, environment, and version. We are omitting all settings related to networking and execution at this point. The Redis connection details will be passed as environment variables. To enable WebSocket communication through the load balancer, we have to switch the protocol from HTTP to TCP using the LoadBalancerPortProtocol setting. In a proper setup you would also have to adjust the nginx configuration because otherwise the connection might be terminated irregularly.

resource "aws_elastic_beanstalk_application" "webui" {
  name = "${local.project_name}"
}

resource "aws_elastic_beanstalk_environment" "webui" {
  name                = "${local.project_name}"
  application         = "${aws_elastic_beanstalk_application.webui.id}"
  solution_stack_name = "64bit Amazon Linux 2018.03 v2.7.1 running Java 8"

  setting {
    namespace = "aws:elasticbeanstalk:application:environment"
    name      = "redis_url"
    value     = "${aws_elasticache_cluster.sensors.cache_nodes.0.address}"
  }
  setting {
    namespace = "aws:elasticbeanstalk:application:environment"
    name      = "redis_port"
    value     = "${aws_elasticache_cluster.sensors.port}"
  }
  setting {
    namespace = "aws:elb:loadbalancer"
    name      = "LoadBalancerPortProtocol"
    value     = "TCP"
  }
}

resource "aws_elastic_beanstalk_application_version" "default" {
  name        = "${local.webui_assembly_prefix}"
  application = "${aws_elastic_beanstalk_application.webui.name}"
  description = "application version created by terraform"
  bucket      = "${aws_s3_bucket.webui.id}"
  key         = "${data.aws_s3_bucket_object.application-jar.key}"
}

output "aws_command" {
  value = "aws elasticbeanstalk update-environment --application-name ${aws_elastic_beanstalk_application.webui.name} --version-label ${aws_elastic_beanstalk_application_version.default.name} --environment-name ${aws_elastic_beanstalk_environment.webui.name}"
}

That's it! Now we have all required resources defined, except for the networking part which we skipped intentionally. Note that you cannot use the default VPC and subnets and security groups as otherwise neither the Lambda nor the Elastic Beanstalk EC2 instances can connect to ElastiCache. Next let's see our baby in action!

Deployment and Usage

As mentioned before the deployment is done in multiple steps. First we create only the S3 bucket for uploading the Elastic Beanstalk artifact. Then we provision the remaining infrastructure. As Terraform does not support deploying Elastic Beanstalk application versions at this point we will execute the generated AWS CLI command afterwards.

cd terraform && terraform apply -auto-approve -target=aws_s3_bucket.webui; cd -
sbt kinesis/assembly && sbt webui/publish && cd terraform && terraform apply -auto-approve; cd -
cd terraform && $(terraform output | grep 'aws_command' | cut -d'=' -f2) && cd -

After completion we can open the Elastic Beanstalk environment URL to see the UI. If we assigned a DNS name we could use that one. Then we open the AWS IoT Console in another browser tab and navigate to the Test page. There we scroll to the Publish section, enter topic/sensors as the topic and can start publishing MQTT messages.

demo#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

Conclusion

In this blog post we have seen how to route MQTT messages towards Kinesis streams using IoT Core rules. Kinesis Firehose delivery streams are a convenient way to automatically persist a data stream in batches. Kinesis data streams as Lambda event sources give a more granular control over what to do with the data. With ElastiCache Redis as an intermediate storage layer and notification service we enable clients to get near-real time updates of the sensors.

Looking at the example solution we built there are a few things we could have done differently. Instead of having to pay for the Firehose delivery stream and the Kinesis data stream at the same time we could only use the data stream and add a custom polling consumer that persists the data in batches, potentially performing some basic format conversions like writing in a compressed columnar storage format.

While configuring Kinesis as an event source for Lambda works great it might become a bit costly if the Lambda function is constantly running. In that case it could pay off to use a custom consumer deployed in ECS EC2, for example.

Using Redis as the intermediate storage layer is only one out of many options. Picking the right data store for your problem is not trivial. Redis is fast because it is in-memory. If you need a more durable and scalable database, DynamoDB is also an option. Clients can subscribe to changes in a DynamoDB table through DynamoDB streams. Maybe you also want to add ElasticSearch or Graphite as consumers.

What do you think? Did you use AWS IoT already for one of your projects? Did you also manage to automate the device management using Terraform? Please comment below!

Cover image by Wilgengebroed on Flickr - Cropped and sign removed from Internet of things signed by the author.jpg, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=32745645


          برنامه نویسی به زبان جاوا اسکریپت روی آردوینو – ایجاد Pulse روی LED      Cache   Translate Page   Web Page Cache   
Arduino-javascript-with-Johnny-five-led-Pulse-tutorial-digispark

در این قسمت از آموزش جاوا اسکریپت آردوینو همانند قبل به ال ای دی فرمان می‌دهیم. ولی با این تفاوت که فرمان به صورت پالس Pulse توسط برد آردوینو در بستر توسعه Johnny-Five به LED ارسال می‌شود. یک مثال بسیار ساده برای کنترل ال ای دی LED توسط برد آردوینو می‌باشد. لازم به ذکر است که […]

نوشته برنامه نویسی به زبان جاوا اسکریپت روی آردوینو – ایجاد Pulse روی LED اولین بار در دیجی اسپارک پدیدار شد.


          $32.00 - Arduino Uno Rev3 Microcontroller      Cache   Translate Page   Web Page Cache   
#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000

Model #: A000066
Item #: N82E16813450001
Price: $32.00
Add To Cart


          Cheapest Arduino Sd Card Module      Cache   Translate Page   Web Page Cache   
Description :The SD Card Module is used for transferring data to and from a standard sd card. The pin out is directly compatible with Arduino and also can be used with other micro-controllers. It allow us to add mass storage and data logging to our project.SD Cards work only at 3.3V and both the pow...
By: Addi mohammed said

Continue Reading »
          Arduino Mesure Accurate A.C Voltage Without Using Transformer.      Cache   Translate Page   Web Page Cache   
In this instructables i ll show you how to mesure accurate Home A.C voltage without using transformer with arduino Parts List & Soldering 2 - 220k ohm resistor 1 or 2 watt4 - 1N4007 diodes1 - capacitor 24v 47uF1 - Zener diode 5.1v1 - 6.8k resistor1 - perfboard1 - Arduino UNO / Arduino NANO Multi...
By: shahid249

Continue Reading »
          Raspberry Pii and OBD      Cache   Translate Page   Web Page Cache   
Connect Raspberry Pii with an attached onboard OBD interface on the raspberry PII to the car and drawing power from OBD port of car and also getting the telemetry from the OBD interface (Budget: €30 - €250 EUR, Jobs: Arduino, C Programming, Electrical Engineering, Microcontroller, Raspberry Pi)
          Raspberry Pii and OBD      Cache   Translate Page   Web Page Cache   
Connect Raspberry Pii with an attached onboard OBD interface on the raspberry PII to the car and drawing power from OBD port of car and also getting the telemetry from the OBD interface (Budget: €30 - €250 EUR, Jobs: Arduino, C Programming, Electrical Engineering, Microcontroller, Raspberry Pi)
          Raspberry Pii and OBD      Cache   Translate Page   Web Page Cache   
Connect Raspberry Pii with an attached onboard OBD interface on the raspberry PII to the car and drawing power from OBD port of car and also getting the telemetry from the OBD interface (Budget: €30 - €250 EUR, Jobs: Arduino, C Programming, Electrical Engineering, Microcontroller, Raspberry Pi)
          Arduino Programming with Steve or work on your own projects      Cache   Translate Page   Web Page Cache   

photoOlyMEGA

Come in and learn Arduino programming with me, or just come in to work on your own projects.

This is a member only night. Please be aware that people will be working on their projects and may not wish to be disturbed.

Olympia, WA 98501 - USA

Tuesday, September 18 at 6:00 PM

1

https://www.meetup.com/OlyMEGA/events/pvvmppyxmbxb/


          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          Footprint for NodeMCU board      Cache   Translate Page   Web Page Cache   

I really don’t know if it fits. PCB printed in paper is at scale, right? If so I can create a two 1x15 header placed 0.8" apart, print it out and check if pins distance matches.

In this first iteration, I won’t be using the mounting hole. But that something I’ll keep in mind!

Actually I bought it because I had some ‘amazon rewards points’ so it was free for me and well supported by the community. So creating a PCB wasn’t an initial goal :slight_smile:#source%3Dgooglier%2Ecom#https%3A%2F%2Fgooglier%2Ecom%2Fpage%2F%2F10000 but you are right. I’ll keep that advise in mind as well.
[/quote]

thanks!
Lucas


          Ahmad Eltaweel replied to Ahmad Eltaweel's discussion Arduino mega error in the group Firefly      Cache   Translate Page   Web Page Cache   
Ahmad Eltaweel replied to Ahmad Eltaweel's discussion Arduino mega error in the group Firefly

          Andy Payne replied to Ahmad Eltaweel's discussion Arduino mega error in the group Firefly      Cache   Translate Page   Web Page Cache   
Andy Payne replied to Ahmad Eltaweel's discussion Arduino mega error in the group Firefly

          Ahmad Eltaweel added a discussion to the group Firefly      Cache   Translate Page   Web Page Cache   
Ahmad Eltaweel added a discussion to the group Firefly
Thumbnail

Arduino mega error

Hi all,I need to set up the Arduino mega with Firefly, but when I go running the Firefly_Firmata it gives me an error!Can you help me with that? ThanksSee More

          ROBOTICS/SCIENCE INSTRUCTOR - STEM EDUTAINMENT INC. - Markham, ON      Cache   Translate Page   Web Page Cache   
Lego, Arduino, VEX, Robot programming). Include teaching the STEAM curriculum, organizing and leading classroom labs, executing a final showcasing student work... $20 - $40 an hour
From Indeed - Wed, 25 Apr 2018 03:31:00 GMT - View all Markham, ON jobs
          Project for Khawaja Muhammad A.      Cache   Translate Page   Web Page Cache   
Hi Khawaja Muhammad A., I noticed your profile and would like to offer you my project. We can discuss any details over chat. (Budget: $25 USD, Jobs: Arduino, C Programming, Electronics, Embedded Software, Hire me, Microcontroller)
          Robot transforms to slide under doors and more      Cache   Translate Page   Web Page Cache   
While the STAR, or Sprawl Turned Autonomous Robot, is more than capable of traveling over obstacles with its three-pointed wheels, it can also make itself thin enough to simply slide under others as needed. This clever design uses an Arduino Pro Mini for control, and normally moves around like a tank, rolling on six wheels […]
          Título: NXT Firmware Update & Arduino IDE Issues - por: crowek123      Cache   Translate Page   Web Page Cache   
Hello, I haven't been playing with my Mindstorms for a while but since I have to teach a summer class on it, I pulled it out of storage and fired up RobotC. It informed me there is a newer RobotC version v3.61. So I downloaded and installed it on my laptop. So the obvious next step is to flash the brick with corresponding new firmware. For some reason it failed and the brick started clicking. I thought I did something wrong. So I pulled out a second brick and it failed too. Long story short, I managed to brick 3 NXT bricks. I powered them down, pulled the battery etc. But as soon as I reinserted the battery, the brick started clicking and hung. RobotC does not see these bricks at all, saying something about cannot find any brick in boot mode. Does anybody know what has gone wrong and how to unbrick them? Any help will be apprecited. I didn't find the right solution from the Internet. References: http://www.robotc.net/forums/viewtopic.php?f=1&t=6278 Intro Video Company (https://jobs.vidzzy.com/hire-intro-video-production-company/) Thank you.
          AJI Report #19 | Scott K Davis and his son Tommy on Gamification and Programming for Kids      Cache   Translate Page   Web Page Cache   

Originally posted on: http://blog.sumon.net/archive/2012/11/13/aji-report-19--scott-k-davis-and-his-son.aspx

Scott K Davis

We are very excited about this show. John and Jeff sat down with Scott Davis and his son Tommy to talk about Gamification and Programming for Kids. Tommy is nine years old and the Iowa Code Camp was his second time presenting. Scott and Tommy introduce a package called Scratch that was developed by MIT to teach kids about logic and interacting with programming using sprites. Tommy's favorite experience with programming right now is Lego Mindstorms because of the interaction with the Legos and the development. Most adults when they get started with development also got started with interacting more with the physical machines. The next generation is given amazing tools, but the tools tend to be sealed and the physical interaction is not there. With some of these alternative hobby platforms like Legos, Arduino, and .NET Micro Framework, kids can write some amazing application and see their code work with physical movement and interaction with devices and sensors.

In the second half of this podcast, Scott talks about how companies can us Gamification to prompt employees to interact with software and processes in the organization. We see gamification throughout the consumer space and you need to do is open up the majority of the apps on our phones or tablets and there is some interaction point to give the user a reward for using the tool. Scott gets into his product Qonqr which is described as the board game Risk and Foursquare together. Scott gets into the different mindsets of gamers (Bartle Index) and how you can use these mindsets to get the most out of your team through gamification techniques.

Listen to the Show

Site: http://scottkdavis.com/
Twitter: @ScottKDavis
LinkedIn: ScottKDavis

Scratch: http://scratch.mit.edu/
Lego Mindstorms: http://mindstorms.lego.com/
Bartle Test: Wikipedia
Gamification: Wikipedia

          Pentasynth: A homebuilt pentatonic keyboard and synth      Cache   Translate Page   Web Page Cache   
Thanks for sending this in Mitch! Via Random Project Lab This is part two (see part one) of a post on a custom-built Arduino-based synthesizer and keyboard called “Pentasynth”. Pentasynth uses a keyboard based on a five note pentatonic scale, so it’s easy to play for people with limited background in music (such as young […]


Next Page: 10000

Site Map 2018_01_14
Site Map 2018_01_15
Site Map 2018_01_16
Site Map 2018_01_17
Site Map 2018_01_18
Site Map 2018_01_19
Site Map 2018_01_20
Site Map 2018_01_21
Site Map 2018_01_22
Site Map 2018_01_23
Site Map 2018_01_24
Site Map 2018_01_25
Site Map 2018_01_26
Site Map 2018_01_27
Site Map 2018_01_28
Site Map 2018_01_29
Site Map 2018_01_30
Site Map 2018_01_31
Site Map 2018_02_01
Site Map 2018_02_02
Site Map 2018_02_03
Site Map 2018_02_04
Site Map 2018_02_05
Site Map 2018_02_06
Site Map 2018_02_07
Site Map 2018_02_08
Site Map 2018_02_09
Site Map 2018_02_10
Site Map 2018_02_11
Site Map 2018_02_12
Site Map 2018_02_13
Site Map 2018_02_14
Site Map 2018_02_15
Site Map 2018_02_15
Site Map 2018_02_16
Site Map 2018_02_17
Site Map 2018_02_18
Site Map 2018_02_19
Site Map 2018_02_20
Site Map 2018_02_21
Site Map 2018_02_22
Site Map 2018_02_23
Site Map 2018_02_24
Site Map 2018_02_25
Site Map 2018_02_26
Site Map 2018_02_27
Site Map 2018_02_28
Site Map 2018_03_01
Site Map 2018_03_02
Site Map 2018_03_03
Site Map 2018_03_04
Site Map 2018_03_05
Site Map 2018_03_06
Site Map 2018_03_07
Site Map 2018_03_08
Site Map 2018_03_09
Site Map 2018_03_10
Site Map 2018_03_11
Site Map 2018_03_12
Site Map 2018_03_13
Site Map 2018_03_14
Site Map 2018_03_15
Site Map 2018_03_16
Site Map 2018_03_17
Site Map 2018_03_18
Site Map 2018_03_19
Site Map 2018_03_20
Site Map 2018_03_21
Site Map 2018_03_22
Site Map 2018_03_23
Site Map 2018_03_24
Site Map 2018_03_25
Site Map 2018_03_26
Site Map 2018_03_27
Site Map 2018_03_28
Site Map 2018_03_29
Site Map 2018_03_30
Site Map 2018_03_31
Site Map 2018_04_01
Site Map 2018_04_02
Site Map 2018_04_03
Site Map 2018_04_04
Site Map 2018_04_05
Site Map 2018_04_06
Site Map 2018_04_07
Site Map 2018_04_08
Site Map 2018_04_09
Site Map 2018_04_10
Site Map 2018_04_11
Site Map 2018_04_12
Site Map 2018_04_13
Site Map 2018_04_14
Site Map 2018_04_15
Site Map 2018_04_16
Site Map 2018_04_17
Site Map 2018_04_18
Site Map 2018_04_19
Site Map 2018_04_20
Site Map 2018_04_21
Site Map 2018_04_22
Site Map 2018_04_23
Site Map 2018_04_24
Site Map 2018_04_25
Site Map 2018_04_26
Site Map 2018_04_27
Site Map 2018_04_28
Site Map 2018_04_29
Site Map 2018_04_30
Site Map 2018_05_01
Site Map 2018_05_02
Site Map 2018_05_03
Site Map 2018_05_04
Site Map 2018_05_05
Site Map 2018_05_06
Site Map 2018_05_07
Site Map 2018_05_08
Site Map 2018_05_09
Site Map 2018_05_15
Site Map 2018_05_16
Site Map 2018_05_17
Site Map 2018_05_18
Site Map 2018_05_19
Site Map 2018_05_20
Site Map 2018_05_21
Site Map 2018_05_22
Site Map 2018_05_23
Site Map 2018_05_24
Site Map 2018_05_25
Site Map 2018_05_26
Site Map 2018_05_27
Site Map 2018_05_28
Site Map 2018_05_29
Site Map 2018_05_30
Site Map 2018_05_31
Site Map 2018_06_01
Site Map 2018_06_02
Site Map 2018_06_03
Site Map 2018_06_04
Site Map 2018_06_05
Site Map 2018_06_06
Site Map 2018_06_07
Site Map 2018_06_08
Site Map 2018_06_09
Site Map 2018_06_10
Site Map 2018_06_11
Site Map 2018_06_12
Site Map 2018_06_13
Site Map 2018_06_14
Site Map 2018_06_15
Site Map 2018_06_16
Site Map 2018_06_17
Site Map 2018_06_18
Site Map 2018_06_19
Site Map 2018_06_20
Site Map 2018_06_21
Site Map 2018_06_22
Site Map 2018_06_23
Site Map 2018_06_24
Site Map 2018_06_25
Site Map 2018_06_26
Site Map 2018_06_27
Site Map 2018_06_28
Site Map 2018_06_29
Site Map 2018_06_30
Site Map 2018_07_01
Site Map 2018_07_02
Site Map 2018_07_03
Site Map 2018_07_04
Site Map 2018_07_05
Site Map 2018_07_06
Site Map 2018_07_07
Site Map 2018_07_08
Site Map 2018_07_09
Site Map 2018_07_10
Site Map 2018_07_11