Skip navigation
1 2 3 Previous Next

Arduino

329 posts

This is my first use of transistors in a project. I need to control a SainSmart 16-Channel Relay Module using an Arduino 101(3v3 GPIOs). This Relay Module uses 5 vdc through Opto couplers to power the relays. The input pins on the relay board are at 4.4 vdc and need to be brought to GND to switch on.

When I connected the Arduino 101(3v3 GPIOs) directly to the relay module some of the relays would stay on while others would be controlled by the Arduino. It all worked fine when I tried an Arduino UNO(5v GPIOs) in place of the 101. But, I want to use the BLE capabilities of the 101.

So my solution is to use  2N22222N2222 transistors because I’ve read they are good at general purpose low-mid power switching Below is the configuration I think is correct Any feed back would be greatly appreciated I’ve tried reading the Data Sheet but I’m mostly going off of other forum posts

 

Relay Board inputs; +4.4vdc, input to ground 4mA

Arduino 101; 3.3vdc GPIOs, max 20mA per GPIO

T1  2N22222N2222

R1: 10K, to reduce current through the Base to 0.33 mA

R2: 100K, drop down resistor. (is it needed?)




  2N2222.JPG

 

Thanks!

 

kk99

Simple thermometer

Posted by kk99 Jan 6, 2017

 sevensegtherm

I would like to show you a simple thermometer with single seven segment LED display HP 5082-7356, DS18B20 sensor and Digispark module. DS18B20 sensor is able to measure temperatures in range form -55 to 125 °C. Digispark module communicates with DS18B20 sensor by 1-Wire interface and reads temperature every 10 seconds. Value of temperature (stored as integer) is displayed on HP display.

Schematic:

schematic

Video:

 

Source code:

sevensegtherm

kk99

Infrared thermometer

Posted by kk99 Jan 2, 2017

pyrometer

I would like to show you a infrared thermometer with MLX90614 sensor, seven segment display HP QDSP-6040 and ATtiny2313 MCU. Sensor allow to measure temperature in following ranges:

1) -40 - 125 °C - in case of measurement of sensor temperature,

2) -70 - 380 °C - in case of measurement of object temperature.

In project is implemented only measurement of object in Celsius degrees.

 

ATtiny2313 MCU communicates with sensor by SMBus. Measured value of temperature is shown on display. Current per single segment of display is configured to 4.67 mA, so display can be easily driven directly from MCU. In first solution as power supply was used ML2020 battery, but it was replaced with 200 mAh battery with TP4056 charger module. Housing was made from epoxy resin.

 

Schematic:

schematic

Images of first version:

pyrometer

 

pyrometer

Images of second version:

pyrometer

 

pyrometer

Video:

Source code in attachment.

ledstar
Hi,
I would like to show simple Christmas decoration. Cotton LED star was made from 5 orange LEDs, few pieces of hotmelt and cotton thread. Each LED diode is controlled by Digispark module with ATTINY85 module. Program was written in C language.

Schematic:

schematic

Photos:

ledstar

ledstar

ledstar

Video:

 

Source code in attachment.

This blog documents some belated progress on my Star Trek themed Pi IoT design challenge entry. It is being put in the arduino area since that is where it is most useful.

I wanted to make the subsystems useful and built well enough to work reliably in their target environment, so this sensor array is built using a custom PCB.

The PCB did not arrive until well after the challenge was over, but it worked perfectly with no errors when I assembled it.

The card features an arduino pro micro which has a couple of quirks to be aware of:

  1. Sketches can defeat the USB so to get back into programming mode, you need to push the reset button twice, which reactivates the USB for 8 seconds, hopefully allowing you to get your software load started.
  2. I used the 3.3V variant of the pro micro so it could directly connect to the Bluetooth module.  This cpu runs at 8 MHz so you need to be sure the compiler is aware of the clock frequency, or all communications timing will be messed up. I installed the pro micro board type in the arduino IDE using this instructional note:

Other features of the card include an HC05 Bluetooth module, a Nokia 5110 LCD, a DHT11/22 temperature/humidity sensor a power switch, a reset switch, a solar panel connector and battery connector a recharging circuit, an I2C connector, a couple of input connectors (analog or digital).

Since I had to order a batch of 10 (for $10) I designed the card to have a little more general capability than just a remote temperature sensor.

The card has extra connectors for more sensors, but the main addition is an LCD connector, allowing it to be used as a stand-alone weather station.

Here is a video showing the system in action:

The android app was developed using App Inventor 2 from MIT.

 

Links to the Pi IoT Design Challenge site:

Pi IoT

Pi IoT - Smarter Spaces with Raspberry Pi 3: About This Challenge

 

Links to blogs about the Star Trek IoT Alcove project:

Pi IoT - Star Trek IoT Alcove - Blog 1

element14 and the photon torpedo - Pi IoT Blog 2

How many tablets to use? Pi IoT Blog 3

Starship Enocean Voyager

The Starship Enocean Voyager - Pi IoT Blog 4

LCARS (Library Computer Access Retrieval System){Star Trek} - Pi IoT Blog 5

LCARS Tablets

Henrietta LCARS

Alcove Transporter

Henrietta LCARS - Pi Iot Blog 6

arduino bluetooth weather station

I've been looking into designing my own Arduino programming and development board after seeing Ben Heck's episode. Apologies if this is in the wrong area.

 

So I made a quick Schematic in Eagle using the arduino schematic from the website, I've included support for the ATTiny85. I know this isn't the first time someone has done something like this, or with home pcb manufacture, just wanted to share some of the problems I've had with this design.

 

So here is the final result, I don't have any form during as I wasn't expecting it to work out. I haven't tested this board as there are a number of shorts, and I don't have a reset from the FTDI header.

Top

Underside

 

I Tried to keep the layout simple as my original plan was to build this on proto-board, but I only had multi core wire and trying to wire that up was a nightmare in itself. So I took the plunge and etched my own board.

I have read of three (at least most mentioned) way of etching a PCB using a laser printer 1) Photo Paper 2) Magazine Newspaper 3) Print n' Peel. So i tried all of them, one of the reasons why i think that the copper on my board appears slightly pitted, removing the toner with fine grit sandpaper. By far the worst method, Print n' Peel, with kept jamming in my printer. Photo Paper worked well, but not all of the traces transferred. Possibly my traces and fills are too close for home manufacture, I plan to have a DRC for eagle best suited for home manufacture. The method I finally used was the Magazine paper, this gave me the best results.

 

I used Ferric Chloride, the only enchant I can easily find in the UK without online ordering. This worked a lot quicker than I thought it would.

 

Thing I want to change for next time;

  • Better Design board, mainly clearances with the copper fill ground. This made it almost impossible with my equipment to solder without shorting to ground.
  • Maybe using Photoresist, I've heard a lot of good reviews of this method
  • Solder Mask - I think this is a must, I am no expert at soldering, and it will help to make my boards look more professional.
  • Drill Press - I too late found out that I don't own a dremel chuck small enough to fit my drill bits, so all of the hole on this board where done using a old school archimedean drill (not fun )
  • Two sided board.

 

I would encourage anyone who has been tempted to design their own boards, just do it. It can be stressful but worth it.

 

Ultimately I want to have a process with I well works best and have a small movable workbench to make custom PCB's and solder station. As my flat is fairly small and i don't have room for a full workbench. If manage to do this I will keep the community informed

I will develop these more when i find time. I've also got a plan for this basic idea including a Raspberry pi, but too early to announce that.

Ublox Neo-6m from E-Bay

Posted by ajens23 Nov 9, 2016

Ublox Neo-6M  from E-bay

Hi All,

 

(First time trying this so please forgive if it's in the wrong place/format/whatever)

 

Just received a couple of Ublox Neo-6M GPS boards from E-bay
and thought I would try a quick review for anyone interested.

Board: GY-GPS6MV2 with Ublox Neo-6M

Seller: Worldchips

Shipping: included

Price: 17USD(+/-)

DSCF1378r1.jpg

Apparently this board contains a voltage regulator (5 pin
chip to left of RX/TX pins) and can be powered off of a 5V supply. I am using
the 3.3V source from a Nearduino Uno (made from only the finest Chinesium).

The board appears to be well made. Soldering is good, antenna
connection is tight and assembled with a nice click/pop.

GPS TX is connected to digital pin 4 on Uno. Online
literature indicates that 3.3V will read as high. (It seems to work OK)

GPS RX is connected to a dropping resistor pair (4.7K + 10K) giving
3.4V. (It also seems to work OK)

 

Detailed directions here

http://www.ayomaonline.com/iot/gy-gps6mv2-neo6mv2-neo-6m-gps-module-with-arduino-usb-ttl/

 

VCC is attached to 3.3V supply of Uno.

GND is attached to Uno Gnd.

Serial monitor connection rate is set to 115200.

TX/RX rate between GPS and UNO is set to 9600. (note that the older GPS
chips were set to 4800bps)

 

Sketch is from TINYGPS examples on github: https://github.com/mikalhart/TinyGPS

When you first start up the GPS, it does take awhile before it starts
producing data. Be patient is can take up to 60 seconds to acquire lock.

It also does not work well indoors. I stuck mine on the window sill and
it was able to acquire a lock fairly quickly.

 

I checked my location using Google maps and it was within 6’ of true position.
I left the unit running for three hours and rechecked it. Indicated position
had drifted to about 15’-20’ from true position.

Not perfect, but for $17 I can probably live with it.

 

For those looking to delve a little deeper, here is information on the
NEMA data that the GPS can output. http://www.gpsinformation.org/dale/nmea.htm

 

DSCF1376r.jpg

 

Code from TinyGPS example

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.

   It requires the use of
SoftwareSerial, and assumes that you have a

   9600-baud serial GPS device
hooked up on pins 4(rx) and 3(tx).

*/

TinyGPS gps;

SoftwareSerial ss(4, 3);

static void smartdelay(unsigned long ms);

static void print_float(float val, float invalid, int len, int prec);

static void print_int(unsigned long val, unsigned long invalid, int
len);

static void print_date(TinyGPS &gps);

static void print_str(const char *str, int len);

void setup()

{

  Serial.begin(115200);

 

  Serial.print("Testing
TinyGPS library v. "); Serial.println(TinyGPS::library_version());

  Serial.println("by Mikal
Hart");

  Serial.println();

  Serial.println("Sats HDOP
Latitude  Longitude  Fix
Date       Time     Date Alt  
Course Speed Card  Distance Course
Card  Chars Sentences Checksum");

  Serial.println("          (deg)     (deg)    
Age                      Age  (m)  
--- from GPS ----  ---- to
London  ----  RX  
RX        Fail");


Serial.println("-------------------------------------------------------------------------------------------------------------------------------------");

 

  ss.begin(9600);

}

 

void loop()

{

  float flat, flon;

  unsigned long age, date, time,
chars = 0;

  unsigned short sentences = 0,
failed = 0;

  static const double LONDON_LAT
= 51.508131, LONDON_LON = -0.128002;

 

  print_int(gps.satellites(),
TinyGPS::GPS_INVALID_SATELLITES, 5);

  print_int(gps.hdop(),
TinyGPS::GPS_INVALID_HDOP, 5);

  gps.f_get_position(&flat,
&flon, &age);

  print_float(flat,
TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);

  print_float(flon,
TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);

  print_int(age,
TinyGPS::GPS_INVALID_AGE, 5);

  print_date(gps);

  print_float(gps.f_altitude(),
TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);

  print_float(gps.f_course(),
TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);

  print_float(gps.f_speed_kmph(),
TinyGPS::GPS_INVALID_F_SPEED, 6, 2);

  print_str(gps.f_course() ==
TinyGPS::GPS_INVALID_F_ANGLE ? "*** " :
TinyGPS::cardinal(gps.f_course()), 6);

  print_int(flat ==
TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned
long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000,
0xFFFFFFFF, 9);

  print_float(flat ==
TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE :
TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON), TinyGPS::GPS_INVALID_F_ANGLE,
7, 2);

  print_str(flat ==
TinyGPS::GPS_INVALID_F_ANGLE ? "*** " :
TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);

 

  gps.stats(&chars,
&sentences, &failed);

  print_int(chars, 0xFFFFFFFF,
6);

  print_int(sentences,
0xFFFFFFFF, 10);

  print_int(failed, 0xFFFFFFFF,
9);

  Serial.println();

 

  smartdelay(1000);

}

static void smartdelay(unsigned long ms)

{

  unsigned long start = millis();

  do

  {

    while (ss.available())

      gps.encode(ss.read());

  } while (millis() - start <
ms);

}

static void print_float(float val, float invalid, int len, int prec)

{

  if (val == invalid)

  {

    while (len-- > 1)

      Serial.print('*');

    Serial.print(' ');

  }

  else

  {

    Serial.print(val, prec);

    int vi = abs((int)val);

    int flen = prec + (val <
0.0 ? 2 : 1); // . and -

    flen += vi >= 1000 ? 4 :
vi >= 100 ? 3 : vi >= 10 ? 2 : 1;

    for (int i=flen; i<len;
++i)

      Serial.print(' ');

  }

  smartdelay(0);

}

static void print_int(unsigned long val, unsigned long invalid, int
len)

{

  char sz[32];

  if (val == invalid)

    strcpy(sz,
"*******");

  else

    sprintf(sz, "%ld",
val);

  sz[len] = 0;

  for (int i=strlen(sz);
i<len; ++i)

    sz[i] = ' ';

  if (len > 0)

    sz[len-1] = ' ';

  Serial.print(sz);

  smartdelay(0);

}

static void print_date(TinyGPS &gps)

{

  int year;

  byte month, day, hour, minute,
second, hundredths;

  unsigned long age;

  gps.crack_datetime(&year,
&month, &day, &hour, &minute, &second, &hundredths,
&age);

  if (age ==
TinyGPS::GPS_INVALID_AGE)

    Serial.print("**********
******** ");

  else

  {

    char sz[32];

    sprintf(sz,
"%02d/%02d/%02d %02d:%02d:%02d ",

        month, day, year, hour,
minute, second);

    Serial.print(sz);

  }

  print_int(age, TinyGPS::GPS_INVALID_AGE,
5);

  smartdelay(0);

}

static void print_str(const char *str, int len)

{

  int slen = strlen(str);

  for (int i=0; i<len; ++i)

    Serial.print(i<slen ?
str[i] : ' ');

  smartdelay(0);

}

Are you a student? Here is how you can win up to 1000 USD -

 

1) Show off your cool projects in which you used Simulink by creating a video which explains how you used Simulink.

2) Visit this page and use the appropriate hashtag while uploading your video to YouTube and complete the entry form on it.

 

And as always please share your projects with e14 community and earn the respect of your peers here as well. 

 

For more details and the challenge rules please visit the challenge homepage.

 

PS - reposting from the MATLAB Simulink community.

Hi!

 

Does anyone has any experience with current transformer with arduino?

I just bought a split core current transformer (SCT-0400-025) from Magnelab and I want to connect to arduino.

According to the datasheet, the input current is 25A and output voltage will be 0.333V. Should i connect any burden resistor? & how should i go about doing it?

 

Please help!

 

Thank you~

clickluna

Hello,

Posted by clickluna Oct 12, 2016

Hello, I'm new here, I'm Brazilian, I studied computer programming and love sharing knowledge about arduino projects.

 

QCoo  is the world’s first high-tech gadget that puts classical games into 3D space and merges new tech with old game, using Bluetooth connectivity to bring you a portable game solution (6oz) that lightens your day. No bigger than a 3 x 3 magic cube you pack in your pocket, QCoo provides more fun than you can imagine: Snake, Q Run inspired by Temple Run, AR (Augmented Reality) Game Q Tower inspired by TowerBloxx, and offers LED effect & LED dice.

 

QCoo is developed by a bunch of young people who love DIY, creativity, and cool things. We think it’s sharing that keeps us improving. Hence we’d love to offer a developer’s version of QCoo which comes with a USB interface that can be connected to your PC, MAC or Linux Computer. Then you can program QCoo, add a new game, improve current one, or even change it completely.

 

Get QCoo on Kickstarter Now:https://www.kickstarter.com/projects/788278700/qcoo-the-world-first-3d-snake-cube-with-ar-and-led

QCoo横幅01.png

MathWorks recently ran a hardware challenge, where in users were asked to submit a project in which they programmed hardware boards using MATLAB or Simulink. The grand prize for this challenge was 1000 USD and we received over 60 submissions for this challenge. Here is a link to the announcement page where you can read about the top 3 prize winners and also see their videos.

 

The announcement page also has a link to all the submissions for those who are interested in seeing the rest of the videos. 

This was a fun project to better understand MQTT techniques. By using an ESP8266 (WeMos dev board), I was able to transmit an RFID UID using the MF-RC522 scanner. I then use Node-RED to orchestrate the workflow.

 

Complete write-up

http://www.internetoflego.com/rfid-scanner-wemos-rc522-mqtt/

 

20160811_231520.jpg

Filter Blog

By date: By tag: