I'm interested in hacking one of those digital picture frames (like you see for sale at Walmart) so it fetches and displays an image off the web every 5 minutes or so. (I'm going to have it load a current image.) Any ideas on how to get started?
I don't think any of them have a form of internet connectivity. I think that would be your first goal. I would start by looking at microcontrollers. The Arduino being a popular one, or the Atmel AVR chips it is based on. The Arduino has at least one add-on called an ethernet shield which you could use to gain network connectivity. You'd have to author some code that is capable of connecting to the site and downloading what you want, depending on the chip storage capacity and your coding ability, it might be very simplistic or quite sophisticated.
Next, you have to have some way of getting the device to use the downloaded images. I don't know if the picture frames use a USB connection to load images onto internal memory, or rely on some sort of flash memory card. If it simply reads an SD card, I don't know how you would be able to hack that, unless you inserted your device between the card reader in the picture frame and your own on-board memory. If it's a USB device, you could make your device emulate a USB flash memory drive.
I'm sure there are many ways to hack these things, you might find some more suggestions on instructables.com, which has numerous microcontroller projects.
Just a note, the Arduino and Atmel AVR chips are a lot of fun to work with, but the learning curve can be a challenge. You can write code for them in C or assembler, or one of the many proprietary languages for microcontrollers. Also Atmel isn't the only choice, there are also PicAxe and BasicX and others.
Robotshop.com has a good selection of controllers, but check around on the web, as there are literally hundreds of choices and vendors.
Related
I have very little experience with non-embedded programming, so i wanted to do a sanity check before I go down this path.
Basically just need to know whether the titular line of actions are possible to do as a 1-click solution in Windows:
Disconnect from current WiFi Network.
Connect to hidden network (An ESP8266).
Transmit data.
Disconnect from hidden network.
Reconnect to original network, which may be any network.
I am not looking for someone to make this for me, I just need to know whether i have to change approach :)
To clarify a bit, the fans on my Lenovo Legion y530 is a pain in my backside, and there doesn't seem to be a way to fix it in software/bios.
So i have decided to make a small, non-intrusive ESP8266 based board that goes between the fans and motherboard, to smooth out the changes in fan-speed, and force the fans to stay above certain speed.
My problem is, i want to be able to adjust this minimal fan speed, as well as the size of the averaging on the PWM signal from the motherboard, so i need to be able to communicate with the ESP8266, without modifying existing hardware on the laptop (and without having to take it apart).
I could go with an ESP32 and use bluetooth, but that would quadrouple the hardware cost, so rather use the 8266.
I'm doing a project with my pi 3 without the gui partially because I want to challenge myself and partially so that my eventual report will look better.
Anyway, I was wondering where/how exactly the directories I interact with are stored. My project involves taking pictures with the camera module. I thought that they were going to be saved on the microSD card with the bootloader, but now that I write that, it sounds kind of naive.
I've decided to just stick a USB into the device and use that to transfer the files, which has its own problems, but that's not what I'm asking.
When I used a microSD>SD>USB adapter set-up to look for the images I had created when starting out, all I could find was what looked like a partition dedicated to holding all of the scripts the pi uses when booting. Were my pictures being saved to some internal memory on the pi itself? I've been trying to find out if the pi even has internal memory, but have so far been stymied. Even if I looked up the data sheet and found that it did have maybe 8GB of long term storage, I would only be guessing and I was wondering if anyone with more experience with pis or other microcontrollers might know.
I am prototyping the driver for an 8 bit parallel image sensor on an ARM device with a built-in ISP. I will spare the details, as I seek for general guide on how to approach this particular problem I am having.
Simply put, when I load the ISP driver (not my prototype camera driver) with dyndbg=+pt flag, the camera driver usually grabs images (about ~8 out of 10 attempts). If I remove the flag, and load the ISP driver without any options, my camera driver rarely finishes its job (about 1 out of ~100 attempts). The system gets stuck saying the device has timed out.
I suspect loading the driver with debug flag is somehow altering the timing, resulting more stable interaction between the ISP and the image sensor. I mostly spend my hours debugging electrical aspects of embedded boards, and rarely delve into a deep software stack such as ISP or Video4Linux. Hence my conjecture may be completely off.
Therefore some pointers will be much appreciated. The kernel is 3.18.
You haven't provided a lot of details for us to work with here, but if enabling debug is making your device work, my suspicion would be that the debug output is introducing a delay which is required for your device to work properly. I'd read through your device datasheets carefully to see if there are any timing requirements you might not be respecting.
I have an arcade stick for my PS3 that I used for fighting games. I rarely play them anymore so I figured I'd plug the stick into my Mac and see if I could get some arcade gaming going on my computer. I have tried this on Windows too and it seems like there are no drivers for either OS.
Now, I'm not one to be disappointed and just give up like that. I thought that this would be the perfect opportunity to attempt to write a driver. How hard can it be? All I need is a plan.
The Plan
I want a driver that supports every function of the arcade stick. This includes:
Eight face buttons
Analog stick
Lock/direction switches (the latter is three steps and the former is two steps)
Home/Turbo buttons
Two side buttons
I was searching around for stuff that could help me accomplish this but I don't really know where to start. I want a tool that can scan a USB port for signals coming from a connected device and from those signals decipher what input it corresponds to. I then want to map that input programmatically to an OS X API for game controllers, put it all in a package and voilá: driver!
Maybe this only works in my head. For starters I can't find this magic USB tool that I'm looking for. I tried USB Prober and it detects my arcade stick but I can't get any log entries when I press buttons on the stick. (Yes, I installed the log kext)
Most of the search results were regarding scanning USB network interfaces. I don't think it's what I'm after.
I also got this idea that maybe USB devices behave like old school Unix devices and I'd be able to do something like cat /dev/usb/port3 and get some good data but I have not found anything like that.
I just don't know where to start. I found some Apple documentation on USB devices but I don't even know if the stick is HID compliant.
Right now I'm mostly looking at libusb and skimming through documentation.
I haven't really dealt with this kind of project before so any ideas and tips are welcome.
Thanks!
Most PS3 controllers are just HID devices, so you should be able to work from that direction.
A much simpler route, and less personally satisfying I suppose, would be to just grab one of the USB->Mac game controller applications and run with that.
I've used USB Overdrive for years and it always seems to work well.
I'm looking to create a driver for a game controller I have (a cobalt flux www.cobaltflux.com ). The physical controller itself has nine face buttons and two control-box buttons (start/select). The control box has a usb port, but as far as I can tell no one has ever written drivers for it before. The end result I want is to be able to plug in the cobalt flux via the usb port and have windows recognize it as a game controller.
I have some programming experience. I'm a senior undergraduate student in computer science at UC Davis and an intern at a large embedded systems company, however this project involves several aspects I have no experience in: interfacing hardware and software via a USB port, investigating feedback from hardware I didn't build (which bits light up when I press a button?), and creating drivers and indeed programs in general for windows.
Since I don't personally know anyone who would be able to set me on the right track for a workflow to solve this problem, I'm asking here. I imagine the approach going something like:
I connect the device via a usb
I open up a program to poll what the effects of pushing buttons are on the USB channel
I write a program that interfaces those signals from the USB port to the game controller drivers that windows has
It may be worthwhile to note that I need to have joyPAD support and not joySTICK support for the buttons since play will involve pressing down any number of buttons at once and joysticks generally only register one direction of input at any given time.
Any advice or help would be greatly appreciated. I am having trouble figuring out where to start.
I have exactly the same problem for more than a year now and I did not found the right solution yet.
When you plug in the pad via USB it announces with a device ID and a vendor ID which device it is. Windows Plug-and-Play starts searching for a driver. This mechanism spots it is a pointing device (in my case one or 2 mice) and makes sure that it is treated as a raw data input device. Input from these devices is converted to messages handled by the OS. The solution seems to be to pass the messages of such a raw input device to the right handler. In my case the two mice are both recognised as mice and the messages are used by the same handler as the ones coming from the 3rd mouse that is really my pointing device. I am not experienced enough in C++ coding in order to dig into the rawinput API. I just received an interesting link as answer on my question: http://www.icculus.org/manymouse/ at least this gives an answer on my problem. May be it will give you ideas for writing your driver! Good luck !!! Stefan