Modifying an Olympia Infoglobe to Allow Control of IR Signals #1895
Replies: 4 comments 10 replies
-
I wish I remembered more about how I did this. However, you will likely need to drive your IR led with more than a normal LED needs. There is an example diagram using a transistor @ https://github.com/mdhiggins/ESP8266-HTTP-IR-Blaster I don't think I used this exact one, but it should work. Also, here is all the code I could find. I think this code wasn't my final code, but should be working. Either way, it looks like I took some basic notes in there. Sadly, there is no confirmation on what I did on the hardware side. I don't think it matters much outside of driving the IR led though. |
Beta Was this translation helpful? Give feedback.
-
Yes, but the code I gave made a local webserver which you gave a message.
At one point a made a version that pulled time and weather and rotated
through those. The weather service has since become pay and the code
doesn't do anything now.
…On Fri, Sep 30, 2022, 5:02 PM David Berdik ***@***.***> wrote:
Well, at least that simplifies it a little bit, although even with this,
it's going to be quite a reach for me. Seeing pictures of a setup that
someone else has already done would really help.
What was your modded globe capable of doing? Did you connect it to the
internet?
—
Reply to this email directly, view it on GitHub
<#1895 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADFAGSVJXWJ7GBWXNRNAQJLWA5IPRANCNFSM6AAAAAAQZJPNJM>
.
You are receiving this because you were mentioned.Message ID:
<crankyoldgit/IRremoteESP8266/repo-discussions/1895/comments/3775605@
github.com>
|
Beta Was this translation helpful? Give feedback.
-
Hi David, How exciting to meet a fellow Infoglobe hacker!! I'm afraid I wrote up the Hackaday instructions more quickly than I should have — looking back on it, they’re not detailed enough on their own to reproduce anything I did. I've always been meaning to write up a tutorial on this thing, so this is a perfect opportunity. Since you're most concerned with the hardware, I wrote up the hardware side of the tutorial on my blog I can also post another tutorial on the software if you have trouble getting that part working as well. Let me know! |
Beta Was this translation helpful? Give feedback.
-
First thing to consider would be that IR Leds shoudln't be giving off
visible light. Look at it with your phone camera, that should pick up the
light and squish it into the visible spectrum. Some lower quality IR leds
might show some light. If that does not work, I would cut everything out of
the code until you just turn on the LED. Then you can figure out what is
wrong. Start adding things back after you get the basics.
…On Wed, Oct 26, 2022, 7:24 PM David Berdik ***@***.***> wrote:
@greenmikey <https://github.com/greenmikey> Would you happen to have any
idea why the following modified version of your code doesn't seem to be
doing anything to the IR LED, but the IR LED blinks when the reset button
on the ESP is pushed? As far as I can tell, the only reason that this would
be an issue is if the wrong GPIO pin is defined for IR_LED, but I am
using D2.
/* * ESP8266 NodeMCU AJAX Demo * Updates and Gets data from webpage without page refresh */
#include <IRremoteESP8266.h>
#include <IRsend.h>
#define LED 2 //On board LED
#define IR_LED 4 // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRsend irsend(IR_LED); // (pin, not inverted, and use modulation) Set the GPIO to be used to sending the message.
String readText;unsigned int khz = 38; // 38kHz carrier frequency for infoglobeunsigned char header[] = {0x04}; //0x01: static, 0x04: scrollingunsigned char message[35] = {"Thank you very much Crankyoldgit"};
void handleMessage() {
Serial.println("In handleMessage()");
readText = "This is a test."; //Refer xhttp.open("GET", "setLED?LEDstate="+led, true);
Serial.print("Current Message: ");
Serial.println(readText);
memset(&message[0], 0, sizeof(message));
for (int j = 0; j < readText.length(); ++j) {
message[j] = readText[j];
}
for (int i = 0; i < sizeof(message); ++i) {
if (message[i] == 0x00) {
Serial.println("null char");
}
else {
Serial.println(message[i]);
}
}
sendHexRaw(header, 1, 38); //header at 38kHz
sendHexRaw(message, readText.length(), 38); // Send a raw data capture at 38kHz.
digitalWrite(IR_LED, LOW);
delay(100);
}
void setup(void){
//Serial.begin(115200);
Serial.begin(115200, SERIAL_8N1); // I'm still not sure what arg 2 does here.
readText = "Thank you very much Crankyoldgit";
Serial.println("In setup()");
//Onboard LED port Direction output
pinMode(LED,OUTPUT);
irsend.begin();
handleMessage();
}
// The internet tells me that loop() isn't mandatory to have, but the compiler freaks out when I// remove it, so I'm forced to leave the stub here.void loop(void){}
void sendHexRaw(unsigned char *sigArray, unsigned int sizeArray, unsigned int khz) {
/* HEADER - the byte determines the transition effect When debugging note that first four bits of header should always be '0' 00 - loads message to buffer for transition effect 01 - Static message - blanks without message 02 - Flashing static message 03 - matches static/scroll of previous message 04 - scrolling (blanks without message) 05 - Overwrite portion of existing message 06 - Toggles scrolling when sent without a message MESSAGE - 35 characters max - if sending a message each byte is an ASCII character. characters not supported: % & + ; @ [ \ ] ^ _ ` { | } ~ see http://hanixdiy.blogspot.com/2010/10/hacking-infoglobe-part-3.html for more details */
uint32_t sigTime = micros();
uint32_t delayTime;
irsend.enableIROut(khz,33);
for (unsigned int i = 0; i < sizeArray; i++) { //iterate thru each byte in sigArray
register uint8_t bitMask = 0x80; //starting value of bitmask fo each Hex byte
while (bitMask) { //do 8 times for each bit of the 8 bit byte
sigTime += 1000; //Time 1ms after our last operation (or start)
delayTime = sigTime - micros(); //The difference between current time and 1ms after our last bit
if (bitMask & sigArray[i]) { //its a One bit
irsend.space(delayTime); // LED off for 1000 usec = 1msec
//Serial.print('1'); //for debug - ruins timing but ensures you use the correct bits
}
else { // its a Zero bit
irsend.mark(delayTime);
//Serial.print('0'); //for debug - ruins timing but ensures you use the correct bits
}
bitMask = (unsigned char) bitMask >> 1; // shift mask bit along until it reaches zero > exit the loop
}
}
}
—
Reply to this email directly, view it on GitHub
<#1895 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADFAGSRDZZLTLN6Z4BF3GTTWFG4SPANCNFSM6AAAAAAQZJPNJM>
.
You are receiving this because you were mentioned.Message ID:
<crankyoldgit/IRremoteESP8266/repo-discussions/1895/comments/3975386@
github.com>
|
Beta Was this translation helpful? Give feedback.
-
Hello all,
I own an old Olympia Infoglobe and would like to modify it. For those of you who are unaware, the Olympia Infoglobe is an old globe-shaped electronic device that used a cool persistence of vision effect to display the date, time, preprogrammed messages, and, if attached to a phone line, would show caller ID.
The device uses IR to send control signals to the rotating arm of the device. Several people over the years have managed to mod the device to allow for control over the IR signals that are sent, thus allowing custom messages to be displayed.
Although I have experience with coding, I am not a hardware person, and would like some advice on how I would even begin to go about doing this. I don't know if this is the right place to go for answers, but it seems that someone (@greenmikey) has used this project once in the past to mod an Infoglobe, so I figured it would not hurt to start here.
Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions