Show Posts
Pages: [1]
1  Development / Other Hardware Development / Moti: Arduino-compatible Smart Motors + Apps on: October 10, 2013, 10:54:02 pm
Hi Everyone,

A small team of us in Toronto have developed a project called Moti, a Smart Motor that is controllable from a browser. It allows people to build robots, and make things move without having to build everything from scratch. 

The project is up on Kickstarter now. We're still a long ways off from our campaign goal (which we set too high) but we're still optimistic. I hope you'll take a moment to check it out:
http://www.kickstarter.com/projects/438051715/moti-smart-motors-for-everyday-robotics

What we're calling a smart motor is an ideal servo with useful features already built-in. Each has a full-turn encoder, eliminating angle limits, so you can tell Moti to turn 5.3 rotations and it will stop with sub-degree precision. There's a bunch of on-board sensors including a current sensor for force feedback, as well as a voltage and temperature sensor. And of course at the heart of the motor is an Arduino-compatible microcontroller that you can program with an ftdi cable or our bluetooth shield. Moti is already loaded with custom firmware, so you can use our simple API to control it. Motis can act autonomously or be controlled from another device like your phone. We've broken out several pins so you can add electronics right to the motor. This is really useful if you're creating a multi-jointed robot, as you can add sensors at each node without needing any external microcontrollers. The motors daisy-chain together so you can snap together as many as you need for your project.

Though there are a lot of features, Moti is very easy to get started with. There's an app that gives users immediate control of every motor in the network using simple graphics like sliders and dials. So you can get things moving in minutes, allowing makers to focus on applications rather than electronics.

There's also a web-API so that you can develop custom websites, games and apps for your project. Our thinking is that once a robot is designed, others should be able to replicate it quickly. When combined with 3D printing and browsers, Moti makes it possible to simply print out a robot body, slot in the motors, and visit a website to bring the new robot to life.

I'd love to talk more about it with you here on the forum. We were thrilled this week that Arduino published about Moti on their blog. You can see it here:
http://blog.arduino.cc/2013/10/09/moti-on-kickstarter/

Thanks,
Nick
http://moti.ph


2  Using Arduino / Networking, Protocols, and Devices / Re: [SOLVED] Library for half-duplex serial? (RX and TX from one pin) on: December 14, 2012, 03:47:17 pm
Quote
I found a good library for this.

It's called SoftwareSerialWithHalfDuplex. Seems to work pretty well.

Alternatively, I'm thinking maybe I could have just tied together the UART RX and TX and set the TX pin to input mode most of the time, but I don't know if I can do that.

Hey there,
I wrote that library...well, mostly just adapted the SoftwareSerial library. Anyways, all it does is what you suggest in your alternative.
Cheers
3  Using Arduino / Programming Questions / Re: Jeelabs library error :( on: September 21, 2012, 10:30:05 pm
I don't follow the extent of your application, but you mention the problem is sending the pot data from the ATtiny84. I suggest you just follow the HLT tutorial at the link I posted. Then check out the software serial library. These are the two things you'll need to solve the problem of sending data from the attiny. I am not familiar with the JeeLabs rf module so can't help you there.

I suggest that first you try a direct wired connection from the tiny to the uno then you'll be able to tell if that works. After getting that to work, move on to adding the rf modules as a wire replacement.

This thread discusses cores: http://arduino.cc/forum/index.php/topic,112560.msg846336.html#msg846336
but don't get too distracted by that. Just understand that Arduino doesn't have built in support for ATtiny's and you have to add some files to make it recognize the chips. The HLT tutorial guides you through the process nicely.
4  Community / Website and Forum / posting etiquette on: September 21, 2012, 09:36:13 pm
Hi,
I have promoted an event in the event forum.
Is it okay to post new info about the event when it arises, or is that considered spammy? Like, I want to announce the location now that it has been secured, but since no one has replied to the thread I might be bumping it.

Also, we now have some volunteer positions we're looking to fill for the event.
So can I post that in the gigs section or should I restrict my posts to the thread that is already related to the event?

I guess I'm an age-old lurker, but haven't directly confronted these rules of etiquette until now.
I saw this: http://arduino.cc/forum/index.php/topic,418.0.html but it's a bit general.
thanks,
Nick
5  Using Arduino / Programming Questions / Re: Jeelabs library error :( on: September 20, 2012, 08:13:11 am
ATtiny supports the software serial library, as long as you use the HLT Arduino Tiny Core: http://hlt.media.mit.edu/?p=1695
You should be able to send and receive no problem just following this tutorial: http://arduino.cc/en/Reference/SoftwareSerial
6  Community / Workshops and Events / Re: Get Your Bot On! Robotics Hackathon...Toronto on: September 03, 2012, 12:25:15 pm
I want to let you know that registration for Get Your Bot On...Toronto is now open.
You can register, and get details of the event at the website above.
7  Community / Workshops and Events / Get Your Bot On! Robotics Hackathon...Toronto on: August 13, 2012, 01:28:20 pm
Hi Everyone,

A robotics hackathon is taking place in Toronto late in November called: Get Your Bot On!
It's a weekend event where tinkerers get together to generate ideas for, and build robots.
More info can be found here:

http://www.getyourboton.com

The hackathon is particularly meant for Arduino users, as the Arduino will be at the core of the kits being provided. If you're in Toronto and you've managed to find this post, then your likely the perfect candidate to join. It is a chance to meet some other makers, and build a cool project together. More info will be forthcoming in the weeks ahead. Please sign up for the email list at the address above to keep up with the latest announcements.
cheers,
Nick
8  Development / Other Software Development / Software Serial with Half Duplex - For a Shared Serial Bus on: July 16, 2012, 04:02:11 pm
Hey Everyone,
I needed to make use of Half Duplex Serial for a project, so I adapted the Software Serial Library to allow for it. You can find it on github:

https://github.com/nickstedman/SoftwareSerialWithHalfDuplex

The value of Half Duplex is that you can daisy-chain a bunch of devices to the same serial line, and communicate with them all. It doesn't however do any error checking or flow control like i2c, so you have to handle that yourself. The robotis AX-12 motors make use of Half-Duplex Serial for example, and it is often used with RS485.

With the standard SoftwareSerial library the TX line is always set as an Output, as you'd expect. With the SoftwareSerialWithHalfDuplex library (sorry for the long name!), by default the TX line works exactly the same as the original, but by adding a couple of optional arguments at instantiation, the TX line can instead be set as an Input, pulled-high. Only when a write/print command is called, does the TX line flip to an Output until the byte is sent, and then resets to an Input. As such, you can make the TX and RX line the same, because transmission will be disallowed while receiving and vice-versa.

Only a few modifications of the SoftwareSerial library were necessary. I'm sure it could be written more efficiently, but I wanted it to be as close to the original as possible to reduce maintenance (and hopefully to be considered for merging... smiley-grin ).

This is my first attempt at it, so any feedback or help is appreciated. Also it's my first time using github so let me know if something's amiss. It's been tested a little bit and seems to work pretty well up to 57600. I've used it to communicate with several Arduinos at once, and also with an AX-12 motor. The Half-Duplex option probably won't work As Is if you need to invert the data, which means that more work is required if you want RS485 communication.

Cheers,
Nick
9  Using Arduino / Microcontrollers / serial receive on attiny84 on: December 30, 2011, 07:04:35 pm
Hi All,
I've been using (and loving) the arduino-tiny core: http://code.google.com/p/arduino-tiny/
with an ATtiny84 and Arduino IDE v.22 (my project uses too many third-party libraries at the moment to make the switch to 1.0 right now).
I was struggling to get serial communication to work with it. There's a debug_serial library but I need bidirectional communication.
I came across this thread that said NewSoftSerial does the trick, http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285218245/all
so I downloaded NewSoftSerial10c from http://arduiniana.org/libraries/newsoftserial/
Sure enough transmitting works fine, but reception not at all.
Digging into NewSoftSerial.cpp you can see that the necessary pin change interrupts are only defined for ATmega168 and 328.
I added references for ATtiny84, and it seems to be working fine so far. I've only tested it on pin D10 as receive, so it might not work on every pin. Of course, use at your own risk...
Nick

Code:
// Abstractions for maximum portability between processors
// These are macros to associate pins to pin change interrupts
#if !defined(digitalPinToPCICR) // Courtesy Paul Stoffregen
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)NULL))
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
#define digitalPinToPCMSK(p)    (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)NULL))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
#elif defined(__AVR_ATtiny84__)
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 10) ? (&GIMSK) : ((uint8_t *)NULL))
#define digitalPinToPCICRbit(p) (((p) <= 2) ? 5 : 4)
#define digitalPinToPCMSK(p)    (((p) <= 2) ? (&PCMSK1) : (((p) <= 10) ? (&PCMSK0) : ((uint8_t *)NULL)))
#define digitalPinToPCMSKbit(p) (((p) <= 2) ? (p) : (((p) - 10) * -1))
#else
#define digitalPinToPCICR(p)    ((uint8_t *)NULL)
#define digitalPinToPCICRbit(p) 0
#define digitalPinToPCMSK(p)    ((uint8_t *)NULL)
#define digitalPinToPCMSKbit(p) 0
#endif
#endif
Pages: [1]